Go 数据类型

打印 上一主题 下一主题

主题 930|帖子 930|积分 2790

数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。
Go是静态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据。
Go有三种基本数据类型:

  • bool:表示布尔值,要么是true,要么是false。
  • 数值型:表示整数类型、浮点数值和复数类型。
  • string:表示字符串值。
示例
以下示例展示了Go中的一些不同数据类型:
  1. package main
  2. import ("fmt")
  3. func main() {
  4.   var a bool = true     // 布尔值
  5.   var b int = 5         // 整数
  6.   var c float32 = 3.14  // 浮点数
  7.   var d string = "Hi!"  // 字符串
  8.   fmt.Println("布尔值: ", a)
  9.   fmt.Println("整数: ", b)
  10.   fmt.Println("浮点数:   ", c)
  11.   fmt.Println("字符串:  ", d)
  12. }
复制代码
布尔数据类型

布尔数据类型使用bool关键字声明,只能取值true或false。
布尔数据类型的默认值是false。
示例
以下示例展示了声明布尔变量的不同方式:
  1. package main
  2. import ("fmt")
  3. func main() {
  4.   var b1 bool = true // 有类型声明和初始值
  5.   var b2 = true // 无类型声明但有初始值
  6.   var b3 bool // 有类型声明但无初始值
  7.   b4 := true // 无类型声明但有初始值
  8.   fmt.Println(b1) // 输出 true
  9.   fmt.Println(b2) // 输出 true
  10.   fmt.Println(b3) // 输出 false
  11.   fmt.Println(b4) // 输出 true
  12. }
复制代码
Go整数数据类型

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

  • 有符号整数 - 可以存储正数和负数
  • 无符号整数 - 只能存储非负数
提示:整数的默认类型是int。如果不指定类型,类型将为int。
有符号整数

使用int关键字声明的有符号整数可以存储正数和负数:
示例
  1. package main
  2. import ("fmt")
  3. func main() {
  4.   var x int = 500
  5.   var y int = -4500
  6.   fmt.Printf("类型: %T, 值: %v", x, x)
  7.   fmt.Printf("类型: %T, 值: %v", y, y)
  8. }
复制代码
Go有五个有符号整数的关键字/类型:
类型大小范围int取决于平台:在32位系统中为 -2147483648 到 2147483647,32位系统为32位,在64位系统中为 -9223372036854775808 到 922337203685477580764位系统为64位int88位/1字节-128 到 127int1616位/2字节-32768 到 32767int3232位/4字节-2147483648 到 2147483647int6464位/8字节-9223372036854775808 到 9223372036854775807无符号整数

使用uint关键字声明的无符号整数只能存储非负数:
示例
  1. package main
  2. import ("fmt")
  3. func main() {
  4.   var x uint = 500
  5.   var y uint = 4500
  6.   fmt.Printf("类型: %T, 值: %v", x, x)
  7.   fmt.Printf("类型: %T, 值: %v", y, y)
  8. }
复制代码
Go有五个无符号整数的关键字/类型:
类型大小范围uint取决于平台:在32位系统中为 0 到 4294967295,32位系统为32位,在64位系统中为 0 到 1844674407370955161564位系统为64位uint88位/1字节0 到 255uint1616位/2字节0 到 65535uint3232位/4字节0 到 4294967295uint6464位/8字节0 到 18446744073709551615选择整数类型取决于变量需要存储的值。
示例
以下示例会导致错误,因为1000超出了int8的范围(范围是从-128到127):
  1. package main
  2. import ("fmt")
  3. func main() {
  4.   var x int8 = 1000
  5.   fmt.Printf("类型: %T, 值: %v", x, x)
  6. }
复制代码
结果:
./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类型的变量:
  1. package main
  2. import (
  3.   "fmt"
  4. )
  5. func main() {
  6.   var x float32 = 123.78
  7.   var y float32 = 3.4e+38
  8.   fmt.Printf("类型:%T,值:%v\n", x, x)
  9.   fmt.Printf("类型:%T,值:%v", y, y)
  10. }
复制代码
float64关键字

与float32相比,float64数据类型可以存储更大范围的数字。
示例
以下示例展示了如何声明一个float64类型的变量:
  1. package main
  2. import (
  3.   "fmt"
  4. )
  5. func main() {
  6.   var x float64 = 1.7e+308
  7.   fmt.Printf("类型:%T,值:%v", x, x)
  8. }
复制代码
选择使用哪种浮点类型取决于变量需要存储的值。
示例
以下示例会导致错误,因为3.4e+39超出了float32的范围:
  1. package main
  2. import (
  3.   "fmt"
  4. )
  5. func main() {
  6.   var x float32 = 3.4e+39
  7.   fmt.Println(x)
  8. }
复制代码
结果:
./prog.go:5:7: constant 3.4e+39 overflows float32
字符串数据类型

字符串数据类型用于存储字符序列(文本)。字符串值必须用双引号括起来:
示例
  1. package main
  2. import (
  3.   "fmt"
  4. )
  5. func main() {
  6.   var txt1 string = "Hello!"
  7.   var txt2 string
  8.   txt3 := "World 1"
  9.   fmt.Printf("类型:%T,值:%v\n", txt1, txt1)
  10.   fmt.Printf("类型:%T,值:%v\n", txt2, txt2)
  11.   fmt.Printf("类型:%T,值:%v\n", txt3, txt3)
  12. }
复制代码
结果:
Type: string, value: Hello!   Type: string, value:   Type: string, value: World 1
最后

为了方便其他设备和平台的小伙伴观看往期文章,链接奉上:
公众号搜索Let us Coding知乎开源中国CSDN思否掘金InfoQ简书博客园慕课51CTOhelloworld腾讯开发者社区阿里开发者社区
看完如果觉得有帮助,欢迎点赞、收藏关注

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表