广州高端网站建设,网站被降权的表现,网站开发游戏,公司网站荣誉墙怎么做✨✨ 欢迎大家来到景天科技苑✨✨
#x1f388;#x1f388; 养成好习惯#xff0c;先赞后看哦~#x1f388;#x1f388; #x1f3c6; 作者简介#xff1a;景天科技苑 #x1f3c6;《头衔》#xff1a;大厂架构师#xff0c;华为云开发者社区专家博主#xff0c;…
✨✨ 欢迎大家来到景天科技苑✨✨ 养成好习惯先赞后看哦~ 作者简介景天科技苑 《头衔》大厂架构师华为云开发者社区专家博主阿里云开发者社区专家博主CSDN全栈领域优质创作者掘金优秀博主51CTO博客专家等。 《博客》Python全栈Golang开发PyQt5和Tkinter桌面开发小程序开发人工智能js逆向App逆向网络系统安全数据分析Djangofastapiflask等框架云原生K8Slinuxshell脚本等实操经验网站搭建数据库等分享。 所属的专栏Go语言开发零基础到高阶实战 景天的主页景天科技苑 文章目录 go数据类型布尔数据类型整形 int浮点型验证浮点数计算时不精确的 特殊的数字类型字符串类型转义字符 go数据类型转换 go数据类型
Go语言是一种静态类型、编译型语言它提供了丰富的数据类型用于处理各种数据。 在Go中数据类型主要分为两大类基本数据类型和派生数据类型。值类型包括整型、浮点型、布尔型、字符串等而派生数据类型则包括指针、数组、结构体、函数、切片、映射、通道和接口等。本文将通过实际案例详细讲解Go语言中的基本数据类型及其用法。
布尔数据类型
布尔型的值只可以是常量 true 或者 false。一个简单的例子var b bool true。 bool的默认值是false
package mainimport fmtfunc main() {// bool类型只有两个值 true 和 false。 对和错// 定义变量 bool 布尔类型的定义 与 int、string 都是Go语言中基本数据类型。var b1 boolvar b2 boolb1 trueb2 false// f 格式化输出 %d 整数 %s 字符串 %p内存地址 %T 类型 %t bool值fmt.Printf(b1%T,%t\n, b1, b1)fmt.Printf(b2%T,%t\n, b2, b2)// 比大小var a int 1var b int 2// 如果 xxx 否则 xxx// 结果就是bool类型fmt.Println(a b)if a b {fmt.Println(a是大于b的)// .....} else {fmt.Println(a是小于b的)}// bool 类型的默认值 false 规定 false 0 true 1var b3 boolfmt.Println(bool默认值, b3)}整形 int
整型 int 和浮点型 float32、float64Go 语言支持整型和浮点型数字并且支持复数其中位的运算采用补码。 Go 也有基于架构的类型例如uint 无符号、int 有符号 每个数字都是有范围的 有的数字只能大于0
有的数字可以小于0
在计算机中所有的东西最终都是存在内存当中的所以我们不能无限的放置东西数字
定义整形变量超过范围会报错定义的时候不报错运行的时候报错
package mainimport fmtfunc main() {// 定义的时候超过限制是不会报错的但是在运行时发生了错误 expected package, found EOF// 计算只能存放固定大小的值。// 我们在定义这个类型的时候系统给了我们一个空间var a int 666666666666666666666663333333333fmt.Println(a)}package mainimport fmtfunc main() {// 定义的时候超过限制是不会报错的但是在运行时发生了报错// 计算只能存放固定大小的值。// 我们在定义这个类型的时候系统给了我们一个空间//var a int64 666666666666666666666663333333333//fmt.Println(a)var i1 int8 // (-128 到 127)i1 -100fmt.Println(i1)//i1 1000//fmt.Println(i1)// 由于系统现在空间都很大默认都使用 int64 int。// 二进制的8位 00000000// 二进一 01// 00000000// 0 0// 1 1// 2 10// 3 11// 4 100// 0~255// 00000000 - 11111111// int16 0000000000000000 - 1111111111111111// int32 00000000000000000000000000000000 - 11111111111111111111111111111111// int64// 0 无符号数 有符号数 -// 定义这个变量的时候空间大小已经被这个数据类型确定了。var i2 uint8 // 0 ~ 255i2 255fmt.Println(i2)}浮点型
浮点型用于表示有小数部分的数。Go语言提供了float32和float64两种浮点型分别占用32位和64位存储空间。 默认情况下Go语言中的浮点字面量被当作float64类型。
浮点数 float float32 float64 也是一个空间的大小。
package mainimport fmt// 浮点数 float 默认是 float64 32
func main() {// 浮点数是不精确的,计算机底层导致的 0 1、浮点数、复数没办法做到精确计算var f1 float64f1 3.16var f2 float32f2 5fmt.Println(f1)// // 默认的 float 类型都是保留了6位小数// 浮点数的格式化输出 %f 都是保留了6位小数,保留2位或者3位怎么实现// .3 保留3位小数 其余类推// 如果小于了当前保留的位数四舍五入fmt.Printf(%T,%.1f\n, f1, f1)fmt.Printf(%T,%f, f2, f2)}验证浮点数计算时不精确的
package mainimport fmtfunc main() {// 浮点数 符号位 指数位 尾数位存储过程中,可能会丢失造成精度损失。// float64 的空间 float32var num1 float32 -123.0000901var num2 float64 -123.0000901fmt.Println(num1)fmt.Println(num2)// 结论// 1、使用float来计算可能导致数据不精确。// 2、float64的精度float32 go语言中浮点数默认使用的是float64
}特殊的数字类型
byte 就是uint8 rune 就是int32
package mainimport fmt// byte
func main() {// 别名uint8是byte十分常用// byte uint8 0-255之间的整数我们通常使用byte来定义 uint8var num1 byte 255fmt.Println(num1)fmt.Printf(%T\n, num1)// 不经常用 rune int32var num2 rune 1000000000fmt.Println(num2)fmt.Printf(%T\n, num2)// int、系统大小来的32位 32、64默认是64// 软件跑在32位系统上是不兼容的var num3 int 100000fmt.Println(num3)fmt.Printf(%T\n, num3)
}64位的操作系统是可以兼容32位的、32为不能跑64位的软件。 寻址空间。
字符串类型
字符串就是一串固定长度的字符连接起来的字符序列。 一段中文或者英文 编码- 字符
Go语言中所有的字符串都是由单个 字符 连接起来的。兼容全世界文字的Go语言默认用的是utf-8编码 UTF-8编码 目前兼容我们绝大部分的文字和符号。
GBK编码中国的编码表号称兼容所有的中文汉字。
Unicode编码表 号称兼容了全世界的文字。
编码 中 本质是一个数字
Go语言中所有的字符串都是由单个 字符 连接起来的 Go语言中单引号是字符、双引号才是 string 类型 字符本质是整型
package mainimport fmtfunc main() {var str stringstr Hello,Worldfmt.Printf(%T,%s\n, str, str)// H E L L O , W O R L D// Go语言中所有的字符串都是由单个 字符 连接起来的。// 单引号是字符、双引号才是 string 类型// 字符本质是整型v1 : Av2 : Afmt.Printf(%T,%d\n, v1, v1)fmt.Printf(%T,%s\n, v2, v2)v3 : 景fmt.Printf(%T,%d\n, v3, v3)
}转义字符
常见的转义字符
package mainimport fmtfunc main() {// 特殊的字符 转义字符 \n// \n 换行fmt.Println(hello\nworld)// \b backspace 删除上一个字符fmt.Println(hello\bworld)// \t Tabfmt.Println(hello\tworld)
}多行输入使用
多行文本
package mainimport fmtfunc main() {// 特殊的字符 转义字符 \n// \n 换行fmt.Println(hello\nworld)// \b backspace 删除上一个字符fmt.Println(hello\bworld)// \t Tabfmt.Println(hello\tworld)// 转义就是可以将特殊转义符号或者一些符号打印出来 \// 可以通过它来定义一些长字符串可以换行输入fmt.Println(\\nsadadasdasdasdasdasda)
}go数据类型转换
在必要以及可行的情况下一个类型的值可以被转换成另一种类型的值。
由于Go语言不存在隐式类型转换因此所有的类型转换都必须显式的声明 A A(B) 布尔类型不支持类型转换
package mainimport fmt// 类型转换
func main() {// 数据类型转换在Go中就一个格式// 新类型的值 新类型旧类型的值// 高位向低位转 int64 int32 int16// 浮点数转整数截断只保留整数部分a : 5.9 // floatb : int(a) // b 就是int类型的a 5fmt.Printf(%T,%.1f\n, a, a)fmt.Printf(%T,%d\n, b, b)c : 1d : float64(c)fmt.Printf(%T,%d\n, c, c)fmt.Printf(%T,%f\n, d, d)// 布尔类型转换布尔类型 是不支持类型转换的。//var flag bool true//f : int(flag)}