你不是通过引用传递的。这个问题有两个解决方案。
解决方案1:使用正则函数
package main
import "fmt"
// base type
type Animal struct {
Name string
Age int
}
type Dog struct {
Animal
PropertyFoo1 int // some field specific to a dog
}
func modifyAnimalName(animal *Animal) {
animal.Name = "changed name!"
}
func main() {
// create a new dog
dog := Dog{
Animal: Animal{
Name: "Doggy",
Age: 5,
},
}
var animal *Animal = &dog.Animal
fmt.Printf("name of dog before: %s \n", dog.Name)
modifyAnimalName(animal) // modify animal name
fmt.Printf("name of dog after: %s \n", dog.Name)
}
解决方案2:使用方法
package main
import "fmt"
type Animal struct {
Name string
Age int
}
type Dog struct {
Animal
PropertyFoo1 int // some field specific to a dog
}
func (a *Animal) modifyAnimalName() {
a.Name = "changed name!"
}
func main() {
// create a new dog
dog := Dog{Animal: Animal{Name: "Doggy", Age: 5}}
var animal *Animal = &dog.Animal
fmt.Printf("name of dog before: %s \n", dog.Name)
animal.modifyAnimalName()
fmt.Printf("name of dog after: %s \n", dog.Name)
}