持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
基础类型
-
整型
- 有符号整型 如:int、int8、int16、int32 和 int64。(可以是负数,零或正数)
- 无符号整型 如:uint、uint8、uint16、uint32 和 uint64。(只有零和正数)
注意:
- 以上用
bit大小表示整型,int 和 uint 没有具体的bit大小的整型,可能是 32 bit 或 64 bit ,主要和硬件设备的 CPU 有关。 - 字节类型 byte 等价于 uint8 类型。即 uint8 类型的别名,用于定义一个字节,所以字节 byte 类型也属于整型。
-
浮点型
- 即小数。如 3.2。Go 语言提供了两种精度的浮点数,分别是 float32 和 float64。
- float32
- float64 ,比较常用,因其精度高
-
布尔型
- 一个布尔型的值只有两种:true 和 false,
-
字符串
- 字符串是一个不可改变的字节序列,其可以包含任意的数据
- len() 函数:返回字符串的字节数目
- 支持索引操作,返回第 i 个字节的字节值
name string = "hello" len(name) // 输出结果 5 name[2] // 输出结果 l -
复数
- Go 语言提供了两种精度的复数类型:complex64 和 complex128,分别对应 float32 和 float64 两种浮点数精度。
- complex() 用于构建复数,内建的 real() 和 imag() 函数分别返回复数的实部和虚部
var x complex128 = complex(3, 4) // 3+4i fmt.Println(real(x)) // "3" fmt.Println(imag(x)) // "4" -
零值
- 就是变量的默认值。声明一个变量没有初始化时,Go 语言会自动初始化其值为对应类型的零值
- 数字类的零值是 0 ,布尔型的零值是 false,字符串的零值是 “” (空字符串)
复合类型
-
数组
- 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成
- 数组可通过索引下标访问数组的每个元素,下标的范围从 0 开始
var a [3]int // 定义数组 a 其每个元素的初始化为 int 的零值,即 0 var names [3]string = [3]string{"tom","jerry","lucy"} var names [3]string = [...]string{"tom","jerry","lucy"} var names [3]string = [3]string{"tom","jerry"} // 第三个元素的值为字符串的零值,即空字符串 names :=[3]string{"tom","jerry","lucy"} -
Slice 切片
- 和数组很像,只是无固定长度,可以理解为动态数组。切片 Slice 的底层就是使用数组实现的
- 声明切片 Slice
slice1 := make([]string,4)以上声明了一个元素类型为 string 的切片,长度是 4 。记住:切片的容量不能比切片的长度小。
- 基于数组生成切片
//基于数组生成切片,包含索引start,但是不包含索引end slice1 :=array[start:end] -
Map
- map 是一个无序的 K-V 键值对集合,结构为 map[K]V。其中 K 对应 Key,V 对应 Value。
- 声明和初始化
personMap:=make(map[string]int)- 获取和删除:通过 [] 操作符,里面是 key
personMap["tom"] = 20 // 赋值 name := personMap["tom"] // 取值-
map 的 [] 操作符可以返回两个值:
- 第一个值是对应的 Value;
- 第二个值标记该 Key 是否存在,如果存在,它的值为 true。
-
遍历 Map, 返回值是2个,第一个是 key ,第二个是 value
for k,v:=range personMap{ .... }
参考资料: