是否可以在没有变量的情况下从具有此结构类型的结构调用方法?
//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添加数据?
或者我选择了错误的方式去做。:)
3条答案
按热度按时间ar5n3qh51#
你可以使用一个struct literal或者一个
nil
指针。1bqhqjot2#
说你可以。
MyStruct.GetSomeAdditionalData()
被称为方法表达式,您必须为该调用提供MyStruct
类型的第一个参数。参数可以是匿名复合文字MyStruct.GetSomeAdditionalData(MyStruct{}).
这里是工作示例https://play.golang.org/p/Wc_DjqnpLC。但所有这些看起来都不太明智。qlzsbp2j3#
你可以定义一个包函数(没有任何接收器)。
它不同于方法,因为方法需要接收器。
你可以直接调用它,而不需要任何结构
MyStruct
的示例(因为你不需要任何MyStruct
数据):(the如果你已经在
models
包中,第二种形式可以工作)