2020-01-07 Go语言学习日记:map、结构体

map

初始化

//初始化
var myMap map[int(键)]string(值)
//
myMap := map[int(键)]string(值){}
//通过make创建,容量会自动扩充
myMap := make(map[int(键)]string(值), 10(指定长度)
  • map只有len没有cap
  • map是无序的

赋值

myMap := map[int]string{1:"1", 2:"2"}
myMap[1] = "10"
myMap[3] = "3"
//myMap = {1:"10", 2:"2", 3:"3"} 其中顺序为无序
  • 如果已经存在的key值则会覆盖value
  • 如果不存在的key值则会追加,map底层会自动扩容,扩容机制和append相似

遍历

//key为键,value为值
for key, value := range myMap {
}
  • 使用range遍历,遍历结果为无序

判断键是否存在

//value为值,exist为是否存在的状态(存在返回为true,不存在返回false)
value, exist := myMap[1(待判断的键)]
if exist == true {
]else {
}

删除

//待删除的map, 想删除的键值的键
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"}//sex默认为0
student2 := Student{id: 1, name: "1"}//sex默认为0

成员调用

//使用`.`进行调用结构体中的成员
student1.id = 1

指针类型结构体

初始化

//顺序初始化,必须每个成员都需要赋值,别忘了&
var student1 *Student = &Student{1, "1", 'm'}
student1 := &Student{1"1", 'm'}
//选择初始化,没有被赋值的成员自动设置为默认值
var student2 *Student = &Student{id: 1, name: "1"}//sex默认为0
student2 := &Student{id: 1, name: "1"}//sex默认为0

成员调用

//指针有合法指向后才能操作成员
//通过指针操作成员可以用`.`运算符 p.id 与 (*P).id均可
student1.id = 1 //常用
(*student1).id = 1

结构体比较

  • 只能使用==!=
  • 当所有值相等时为true,当值不等时为false(是值判断,不是引用判断)

结构体的赋值

  • 同类型变量之间可以使用=赋值

结构体作为函数参数

  • 值传递:直接作为参数传入,形参不能修改实参
  • 地址(引用)传递: 传入地址(&),形参可以修改实参
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值