这种行为有原因吗?我想知道内存级别有什么不同。编译器返回“无法获取复合文字的地址”,而我可以明确要求它这样做。
u := User{"john"}
fmt.Println(u.Name()) //implicit
//fmt.Println(User{"john"}.Name()) //Error: cannot call pointer method on composite literal, cannot take the address of composite literal
fmt.Println((&User{"jim"}).Name()) //explicit
type User struct {
name string
}
func (u *User) Name() string {
return u.name
}
有只小跳蛙
相关分类