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}
