var anonymousStruct = &struct {
Value int
Test func()
}{
Test: func() {
fmt.Println(anonymousStruct.Value)
},
}
字符串
查看代码时,我在第6行遇到了一个问题:函数“Test”无法访问参数“Value”。是否有一种方法可以让函数访问“Value”,而无需再次将其作为参数传递,类似于“anonymousStruct.Test(anonymousStruct.Value)"?换句话说,在Go中,匿名结构体可以拥有方法而不是函数吗?感谢您的指导。
1条答案
按热度按时间eh57zj3b1#
不能将方法声明为匿名结构,因为方法声明只能包含命名类型(作为接收器)。
除此之外,如果匿名结构嵌入了具有方法的类型(它们会被提升),则它们可以具有方法。
在你的例子中,你不能在复合文字中引用
anonymousStruct
变量,因为变量只有在声明之后(复合文字之后)才在作用域中。参见Spec:Declarations and scope; example:Define a recursive function within a function in Go.例如,你可以在变量声明之后初始化函数字段:
字符串
这将输出(在Go Playground上尝试):
型