Go中的数据类型

534 阅读3分钟

这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战

Go语言

Go语言是一门静态类型的语言

也是一门面向过程的语言, 不要带着面向对象的思想去学习Go

代码的编写非常简洁, 在我的眼中它有C语言的简练和容易上手, 有可以媲美C的运行速度

也有着Java语言的强大, 内置了很多系统标准库, 而不是在依赖其它的第三方库和框架

如果你掌握了Go, 那么你就掌握了未来!!!

布尔型

bool, 取值只能是true或者false

Go语言中对true和false的常量定义

 const (
   true  = 0 == 0 // Untyped bool.
   false = 0 != 0 // Untyped bool.
 )

整型

int - 有符号, 根据运行时所在操作系统而决定

int8 - 可表示范围: -27 ~ 27-1

int16 - 可表示范围: -215 ~ 215-1

int32 - 可表示范围: -231 ~ 231-1

int64 - 可表示范围: -263 ~ 263-1

uint - 无符号, 根据运行时所在操作系统而决定

uint8 - 可表示范围: 0 ~ 28-1

uint16 - 可表示范围: 0 ~ 216-1

uint32 - 可表示范围: 0 ~ 232-1

uint64 - 可表示范围: 0 ~ 264-1

 // 整型
 var i int = 10
 fmt.Println(i)
 
 // 如果给一个无符号整数赋值为一个负数, 则会报错
 //var ui uint = -10;
 //fmt.Println(ui)

浮点型

float32, 提供小数点后6位的精度

float64, 提供小数点后15位的精度

 // float32浮点数
 var f float32 = 3.14
 fmt.Println(f)
 
 // float32浮点数, 四舍五入的舍弃小数点6位之后的小数
 var f2 float32 = 1.123456789
 fmt.Println(f2)
 
 // float64浮点数
 var f3 float64 = 1.123456789
 fmt.Println(f3)

复数

complex64

实数部分和虚数部分都是float32类型

complex128

实数部分和虚数部分都是float64类型

 // 复数
 var c1 complex64 = 3 + 5i
 fmt.Println(c1)
 
 var c2 complex64 = complex(5, 7)
 fmt.Println(c2)
 
 // 获取实数部分
 var re float32 = real(c2)
 fmt.Println(re)
 
 // 获取虚数部分
 var im float32 = imag(c2)
 fmt.Println(im)

字符串类型

Go语言中的字符串采用UTF-8编码来表示Unicode字符

当我们定义一个字符串时, 如果没有赋值, 那它就是一个长度为0的字符串 字符串的值是不可改变的

 var s string = "hi, go!"
 fmt.Println(s)
 
 // 空字符串, 打印长度为0
 var snil string;
 fmt.Println(len(snil))

uintptr

一个无符号的整型值, 可以表示任意地址并进行数值计算

byte

等同于uint8, 为了表示ASCII码表的字符

rune

等同于int32, 在处理Unicode中的字符时会用到

nil

可以表示指针, 通道, 函数, 接口, 映射, 切片的零值

所以nil必须赋值给一个指针类型的变量

派生类型

指针类型 数组类型 结构体类型 通道类型 函数类型 切片类型 接口类型 映射类型

不同进制数的表示形式

 // 二进制: 0b为前缀, 例如: 0b100 表示十进制的5
 fmt.Println(0b100)
 
 // 八进制: 0为前缀, 例如 012 表示十进制的 10
 fmt.Println(012)
 
 // 十六进制: 0x为前缀, 例如: 0x23 表示十进制的35
 fmt.Println(0x23)