猿问

Golang,从结构调用方法

是否可以使用这种结构类型从没有变量的结构中调用方法?


//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 有其他方法为结构添加一些数据?


或者我选择了错误的方式来做到这一点?:)


喵喔喔
浏览 172回答 3
3回答

呼唤远方

您可以使用结构文字或nil指针。MyStruct{}.GetSomeAdditionalData()(*MyStruct)(nil).GetSomeAdditionalData()

慕妹3242003

您可以定义一个包函数(没有任何接收器)。它不同于方法,因为方法需要接收器。func GetSomeAdditionalData() string {  return "additional data string"}您可以直接调用,无需任何结构实例MyStruct(因为您不需要任何MyStruct数据):func main() {  fmt.Println(models.GetSomeAdditionalData())  fmt.Println(GetSomeAdditionalData())(如果您已经在包裹中,则第二种形式有效models)
随时随地看视频慕课网APP

相关分类

Go
我要回答