文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
修改参数
func main() {
p:=person{name: "张三",age: 18}
modifyPerson(p)
fmt.Println("person name:",p.name,",age:",p.age)
}
func modifyPerson(p person) {
p.name = "李四"
p.age = 20
}
type person struct {
name string
age int
}
person name: 张三 ,age: 18
modifyPerson(&p)
func modifyPerson(p *person) {
p.name = "李四"
p.age = 20
}
person name: 李四 ,age: 20
值类型
func main() {
p:=person{name: "张三",age: 18}
fmt.Printf("main函数:p的内存地址为%p\n",&p)
modifyPerson(p)
fmt.Println("person name:",p.name,",age:",p.age)
}
func modifyPerson(p person) {
fmt.Printf("modifyPerson函数:p的内存地址为%p\n",&p)
p.name = "李四"
p.age = 20
}
main函数:p的内存地址为0xc0000a6020
modifyPerson函数:p的内存地址为0xc0000a6040
person name: 张三 ,age: 18

指针类型
func main() {
p:=person{name: "张三",age: 18}
fmt.Printf("main函数:p的内存地址为%p\n",&p
modifyPerson(&p)
fmt.Println("person name:",p.name,",age:",p.age)
}
func modifyPerson(p *person) {
fmt.Printf("modifyPerson函数:p的内存地址为%p\n",p)
p.name = "李四"
p.age = 20
}
main函数:p的内存地址为0xc0000a6020
modifyPerson函数:p的内存地址为0xc0000a6020
person name: 李四 ,age: 20
引用类型
map
func main() {
m:=make(map[string]int)
m["飞雪无情"] = 18
fmt.Println("飞雪无情的年龄为",m["飞雪无情"])
modifyMap(m)
fmt.Println("飞雪无情的年龄为",m["飞雪无情"])
}
func modifyMap(p map[string]int) {
p["飞雪无情"] =20
}
飞雪无情的年龄为 18
飞雪无情的年龄为 20
// makemap implements Go map creation for make(map[k]v, hint).
func makemap(t *maptype, hint int, h *hmap) *hmap{
//省略无关代码
}
func main(){
//省略其他没有修改的代码
fmt.Printf("main函数:m的内存地址为%p\n",m)
}
func modifyMap(p map[string]int) {
fmt.Printf("modifyMap函数:p的内存地址为%p\n",p)
//省略其他没有修改的代码
}
飞雪无情的年龄为 18
main函数:m的内存地址为0xc000060180
modifyMap函数:p的内存地址为0xc000060180
飞雪无情的年龄为 20
chan
func makechan(t *chantype, size int64) *hchan {
//省略无关代码
}
类型的零值