1. 結構體做函數的參數或返回值時,都會被重新拷貝一份如果不想拷貝,可以傳遞結構體指針
package main import "fmt" type Person struct { name string age int } var p = Person{"武沛齊", 18} func doSomething() Person { // 結構體做函數的參數或返回值時,都會被重新拷貝一份,如果不想拷貝,可以傳遞結構體指針 return p } func main() { p1 := doSomething() p1.name = "馬亞南" fmt.Println(p1) fmt.Println(p) }
輸出:{馬亞南 18} {武沛齊 18}
2. 如果不想拷貝,可以傳遞結構體指針
package main import "fmt" type Person struct { name string age int } var p = Person{"武沛齊", 18} func doSomething() *Person { // 結構體做函數的參數或返回值時,都會被重新拷貝一份,如果不想拷貝,可以傳遞結構體指針 return &p } func main() { p1 := doSomething() p.name = "馬亞南" fmt.Println(p1) fmt.Println(p) }
輸出:&{馬亞南 18} {馬亞南 18}