Golang,从结构调用方法
Golang, call method from 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 有其他方法可以为结构添加一些数据?
或者我 select 做错了方法? :)
您可以定义一个包function(没有任何接收器)。
它不同于 method,因为方法需要接收者。
func GetSomeAdditionalData() string {
return "additional data string"
}
你可以直接调用它,而不需要结构 MyStruct
的任何实例(因为你不需要任何 MyStruct
数据):
func main() {
fmt.Println(models.GetSomeAdditionalData())
fmt.Println(GetSomeAdditionalData())
(如果您已经在包 models
中,则第二种形式有效)
说你可以。 MyStruct.GetSomeAdditionalData()
被称为方法表达式,您必须为该调用提供 MyStruct
类型的第一个参数。参数可以是匿名复合文字 MyStruct.GetSomeAdditionalData(MyStruct{}).
这是工作示例 https://play.golang.org/p/Wc_DjqnpLC 。但是这一切看起来都不是很明智。
您可以使用结构文字或 nil
指针。
MyStruct{}.GetSomeAdditionalData()
(*MyStruct)(nil).GetSomeAdditionalData()
这种结构类型是否可以从不带变量的结构中调用方法?
//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 有其他方法可以为结构添加一些数据?
或者我 select 做错了方法? :)
您可以定义一个包function(没有任何接收器)。
它不同于 method,因为方法需要接收者。
func GetSomeAdditionalData() string {
return "additional data string"
}
你可以直接调用它,而不需要结构 MyStruct
的任何实例(因为你不需要任何 MyStruct
数据):
func main() {
fmt.Println(models.GetSomeAdditionalData())
fmt.Println(GetSomeAdditionalData())
(如果您已经在包 models
中,则第二种形式有效)
说你可以。 MyStruct.GetSomeAdditionalData()
被称为方法表达式,您必须为该调用提供 MyStruct
类型的第一个参数。参数可以是匿名复合文字 MyStruct.GetSomeAdditionalData(MyStruct{}).
这是工作示例 https://play.golang.org/p/Wc_DjqnpLC 。但是这一切看起来都不是很明智。
您可以使用结构文字或 nil
指针。
MyStruct{}.GetSomeAdditionalData()
(*MyStruct)(nil).GetSomeAdditionalData()