数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。

Go是动态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据。

Go有三种根本数据类型:

  • bool:示意布尔值,要么是true,要么是false。
  • 数值型:示意整数类型、浮点数值和复数类型。
  • string:示意字符串值。

示例

以下示例展现了Go中的一些不同数据类型:

package mainimport ("fmt")func main() {  var a bool = true     // 布尔值  var b int = 5         // 整数  var c float32 = 3.14  // 浮点数  var d string = "Hi!"  // 字符串  fmt.Println("布尔值: ", a)  fmt.Println("整数: ", b)  fmt.Println("浮点数:   ", c)  fmt.Println("字符串:  ", d)}

布尔数据类型

布尔数据类型应用bool关键字申明,只能取值true或false。

布尔数据类型的默认值是false。

示例

以下示例展现了申明布尔变量的不同形式:

package mainimport ("fmt")func main() {  var b1 bool = true // 有类型申明和初始值  var b2 = true // 无类型申明但有初始值  var b3 bool // 有类型申明但无初始值  b4 := true // 无类型申明但有初始值  fmt.Println(b1) // 输入 true  fmt.Println(b2) // 输入 true  fmt.Println(b3) // 输入 false  fmt.Println(b4) // 输入 true}

Go整数数据类型

整数数据类型用于存储没有小数点的整数,例如35、-50或1345000。

整数数据类型有两个类别:

  • 有符号整数 - 能够存储负数和正数
  • 无符号整数 - 只能存储非正数

提醒:整数的默认类型是int。如果不指定类型,类型将为int。

有符号整数

应用int关键字申明的有符号整数能够存储负数和正数:

示例

package mainimport ("fmt")func main() {  var x int = 500  var y int = -4500  fmt.Printf("类型: %T, 值: %v", x, x)  fmt.Printf("类型: %T, 值: %v", y, y)}

Go有五个有符号整数的关键字/类型:

类型大小范畴
int取决于平台:在32位零碎中为 -2147483648 到 2147483647,
32位零碎为32位,在64位零碎中为 -9223372036854775808 到 9223372036854775807
64位零碎为64位
int88位/1字节-128 到 127
int1616位/2字节-32768 到 32767
int3232位/4字节-2147483648 到 2147483647
int6464位/8字节-9223372036854775808 到 9223372036854775807

无符号整数

应用uint关键字申明的无符号整数只能存储非正数:

示例

package mainimport ("fmt")func main() {  var x uint = 500  var y uint = 4500  fmt.Printf("类型: %T, 值: %v", x, x)  fmt.Printf("类型: %T, 值: %v", y, y)}

Go有五个无符号整数的关键字/类型:

类型大小范畴
uint取决于平台:在32位零碎中为 0 到 4294967295,
32位零碎为32位,在64位零碎中为 0 到 18446744073709551615
64位零碎为64位
uint88位/1字节0 到 255
uint1616位/2字节0 到 65535
uint3232位/4字节0 到 4294967295
uint6464位/8字节0 到 18446744073709551615

抉择整数类型取决于变量须要存储的值。

示例

以下示例会导致谬误,因为1000超出了int8的范畴(范畴是从-128到127):

package mainimport ("fmt")func main() {  var x int8 = 1000  fmt.Printf("类型: %T, 值: %v", x, x)}

后果:

./prog.go:5:7: constant 1000 overflows int8

Go浮点数数据类型

浮点数数据类型用于存储带有小数点的负数和正数,例如35.3、-2.34或3597.34987。

浮点数数据类型有两个关键字:

类型 大小 范畴

  • float32 32位 -3.4e+38 到 3.4e+38。
  • float64 64位 -1.7e+308 到 +1.7e+308。

提醒:浮点数的默认类型是float64。如果不指定类型,类型将为float64。

float32关键字

示例

以下示例展现了如何申明一些float32类型的变量:

package mainimport (  "fmt")func main() {  var x float32 = 123.78  var y float32 = 3.4e+38  fmt.Printf("类型:%T,值:%v\n", x, x)  fmt.Printf("类型:%T,值:%v", y, y)}

float64关键字

与float32相比,float64数据类型能够存储更大范畴的数字。

示例

以下示例展现了如何申明一个float64类型的变量:

package mainimport (  "fmt")func main() {  var x float64 = 1.7e+308  fmt.Printf("类型:%T,值:%v", x, x)}

抉择应用哪种浮点类型取决于变量须要存储的值。

示例

以下示例会导致谬误,因为3.4e+39超出了float32的范畴:

package mainimport (  "fmt")func main() {  var x float32 = 3.4e+39  fmt.Println(x)}

后果:

./prog.go:5:7: constant 3.4e+39 overflows float32

字符串数据类型

字符串数据类型用于存储字符序列(文本)。字符串值必须用双引号括起来:

示例

package mainimport (  "fmt")func main() {  var txt1 string = "Hello!"  var txt2 string  txt3 := "World 1"  fmt.Printf("类型:%T,值:%v\n", txt1, txt1)  fmt.Printf("类型:%T,值:%v\n", txt2, txt2)  fmt.Printf("类型:%T,值:%v\n", txt3, txt3)}

后果:

`Type: string, value: Hello!
Type: string, value:
Type: string, value: World 1`

最初

为了不便其余设施和平台的小伙伴观看往期文章,链接奉上:

公众号搜寻Let us Coding知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区

看完如果感觉有帮忙,欢送点赞、珍藏关注