package main import "fmt" type student struct { id int name string sex byte age int addr string } func test01(s student) { s.id = 2 fmt.Println("test s = ", s) } func test02(p *student ) { p.id = 3 fmt.Println("p = ", *p) } func main() { s1 := student{id: 1, name: "baylorqu", age: 18} fmt.Println("s1 = ", s1) test01(s1) //這里進行的是值傳遞,形參無法變更實參 fmt.Println("s1 = ", s1) test02(&s1) //這里傳遞的是結構體的地址,函數里的操作會直接操作地址指向的結構體 }
執行結果為
s1 = {1 baylorqu 0 18 } test s = {2 baylorqu 0 18 } s1 = {1 baylorqu 0 18 } p = {3 baylorqu 0 18 }