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}

浙公网安备 33010602011771号