是否可以使用此结构类型从struct调用方法而不使用变量?
//models.go
type MyStruct struct {
id int
name string
}
func (s MyStruct) GetSomeAdditionalData() string {
return "additional data string"
}
//app.go
func main() {
fmt.Println(models.MyStruct.GetSomeAdditionalData()) // not works
var variable models.MyStruct
fmt.Println(variable.GetSomeAdditionalData()) // it worked
}
或者也许Go有其他方法为struct添加一些数据?
或许我选择了错误的方法来做到这一点? :)
答案 0 :(得分:5)
您可以使用struct literal或nil
指针。
MyStruct{}.GetSomeAdditionalData()
(*MyStruct)(nil).GetSomeAdditionalData()
答案 1 :(得分:1)
说你可以。 MyStruct.GetSomeAdditionalData()
被称为方法表达式,您必须为该调用提供类型MyStruct
的第一个参数。参数可以是匿名复合文字MyStruct.GetSomeAdditionalData(MyStruct{}).
这是工作示例https://play.golang.org/p/Wc_DjqnpLC。但所有看起来都不太合理。
答案 2 :(得分:0)