如何从struct方法字段访问结构字段名称 PrintName示例:
type Data struct {
Name string
PrintName func()
}
func main() {
data := Data{
Name: "Name",
PrintName: func() {
fmt.Println(Name)
},
}
data.PrintName()
}发布于 2022-04-16 12:59:24
您分配给Data.PrintName的函数值与封闭结构没有任何连接,因此在一般情况下它不能访问Name字段。
如果要访问name字段,则必须显式传递它,或者使用可以访问data结构的闭包,如下所示:
data := Data{
Name: "Name",
}
data.PrintName = func() {
fmt.Println(data.Name)
}
data.PrintName()这将输出(在围棋游乐场上尝试它):
Name在本例中,我们分配给data.PrintName字段的函数值是闭包,因为它使用了来自封闭块的变量。
您还可以选择显式地将Data值传递给函数值,但是必须修改其签名:
type Data struct {
Name string
PrintName func(d Data)
}
func main() {
data := Data{
Name: "Name",
}
data.PrintName = func(d Data) {
fmt.Println(d.Name)
}
data.PrintName(data)
}这输出相同,在围棋游乐场上试试这个。
https://stackoverflow.com/questions/71894029
复制相似问题