map
初始化
var myMap map[int(键)]string(值)
myMap := map[int(键)]string(值){}
myMap := make(map[int(键)]string(值), 10(指定长度))
赋值
myMap := map[int]string{1:"1", 2:"2"}
myMap[1] = "10"
myMap[3] = "3"
- 如果已经存在的key值则会覆盖value
- 如果不存在的key值则会追加,map底层会自动扩容,扩容机制和append相似
遍历
for key, value := range myMap {
}
判断键是否存在
value, exist := myMap[1(待判断的键)]
if exist == true {
]else {
}
删除
delete(myMap, 1(键))
map做函数参数
- map为引用
- 函数内部对map的改变会影响函数外部的map
结构体
定义
type Student struct {
id int
name string
sex byte
}
- 结构体名称首字母大写
- 变量不需要加var
- (结构体类型名、结构体成员名)首字母为小写则说明为私有(只能自己包中可以使用),大写为共有(其他包也可以使用)
普通结构体
初始化
var student1 Student = Student{1, "1", 'm'}
student1 := Student{1,"1", 'm'}
var student2 Student = Student{id: 1, name: "1"}
student2 := Student{id: 1, name: "1"}
成员调用
student1.id = 1
指针类型结构体
初始化
var student1 *Student = &Student{1, "1", 'm'}
student1 := &Student{1,"1", 'm'}
var student2 *Student = &Student{id: 1, name: "1"}
student2 := &Student{id: 1, name: "1"}
成员调用
student1.id = 1
(*student1).id = 1
结构体比较
- 只能使用
==
和!=
- 当所有值相等时为true,当值不等时为false(是值判断,不是引用判断)
结构体的赋值
结构体作为函数参数
- 值传递:直接作为参数传入,形参不能修改实参
- 地址(引用)传递: 传入地址(&),形参可以修改实参