go语言基础之结构体做函数参数 值传递和地址传递
1、结构体做函数参数值传递
示例:
package main //必须有个main包 import "fmt" //定义一个结构体类型 type Student struct { id int name string sex byte //字符类型 age int addr string } func test01(s Student) { s.id = 666 fmt.Println("test01: ", s) } func main() { s := Student{1, "mike", 'm', 18, "bj"} test01(s) //地址传递 fmt.Println("main: ", s) }
执行结果:
test01: {666 mike 109 18 bj} main: {1 mike 109 18 bj}
2、结构体做函数参数:地址传递
示例:
package main //必须有个main包 import "fmt" //定义一个结构体类型 type Student struct { id int name string sex byte //字符类型 age int addr string } func test02(p *Student) { p.id = 666 } func main() { s := Student{1, "mike", 'm', 18, "bj"} test02(&s) //地址传递(引用传递),形参可以改实参 fmt.Println("main: ", s) }
执行结果:
main: {666 mike 109 18 bj}