Maps,字符串
Maps
1.Map的定义
map语法为:var a map [键值类型] value值类型
map是指在Go中将值(value)与键(key)关联的内置函数,可通过相应的键可以获取到值。map的空值是nil类型。
package main import "fmt" func main() { var a map[int]string fmt.Println(a) # 如果只是初始化不赋值,那么map便是nil类型 if a==nil{ fmt.Println("xxxx") # 打印结果>>>:xxxx } }
2.Map的赋值和取值
如果想添加元素到nil map中,必须使用 make 函数初始化。获取map 元素语法是 map[key]。
package main import "fmt" func main() { var a map[int]string = make(map[int]string) # 定义和初始化的第一种方式 fmt.Println(a) # >>>:map[] a[1] = "10" a[2] = "20" a[3] = "30" ------------------------------------------------ var a = map[int]string{1:"10",2:"20",3:"30"} # 定义和初始化的第二种方式 fmt.Println(a) # >>>:map[1:10 2:20 3:30] fmt.Println(a[4]) # 如果取一个不存在的key值,返回的value是一个空值。 }
3.字典删除元素
删除 map 中 key的语法是:delete(map, key)。delete为内置函数。这个函数没有返回值。
package main import "fmt" func main() { var a = map[int]string{1:"10",2:"20",3:"30"} delete(a, 2) fmt.Println(a) # >>>:map[1:10 3:30] ,key为2的值被删除。 }
4.获取Map的长度
获取 map 的长度使用 len() 函数。
package main import "fmt" func main() { var a = map[int]string{1:"10",2:"20",3:"30"} delete(a, 2) fmt.Println(a) # >>>:map[1:10 3:30] ,key为2的值被删除。 fmt.Println(len(a)) # >>>:2 # 获取长度 }
5.Map的相等性
map之间不能使用 == 操作符判断,==只能用来检查 map 是否为nil类型。
6.Map循环出所有的元素
package main import "fmt" func main() { var a = map[int]string{1:"10",2:"20",3:"30",4:"40",5:"50"} # 这种方法取出来符map是有序的 for i:=0; i<len(a)+1; i++ { fmt.Println(a[i]) } --------------------------------------------------- for k,v := range a{ # 这种方法取出来符map是无序的 fmt.Println(k,v) } }
字符串
1.字符串的定义
go语言中的字符串其实是一个字节切片,把内容放在双引号 " " 中,便成功创建了一个字符串(go语言中单引号' '是无法生成字符串的)。go中的字符串是兼容Unicode编码的,并且string类型都是utf-8编码。
go语言的字符有以下两种:
1)一种是 uint8 类型,或者叫 byte 型,代表了ASCII码的一个字符。
2)另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。
2.单独获取字符串的每一个字节
len(s) 返回字符串中字节的数量。其中%X格式限定符用于指定 16 进制编码,此时打印得用 Printf( )。
3.rune
rune 是 int32 的别称,可以通过rune获取字符串中字符的数量。
4.用 rune 切片构造字符串
package main import "fmt" func main() { runeSlice := []rune{0x0053, 0x0065, 0x00f1, 0x006f, 0x0072} str := string(runeSlice) fmt.Println(str) }
在上面的程序中 runeSlice
包含字符串 Señor
的 16 进制的 Unicode 代码点。这个程序将会输出Señor
。