为了账号安全,请及时绑定邮箱和手机立即绑定

Golang,从结构调用方法

Golang,从结构调用方法

Go
喵喔喔 2021-09-13 10:38:32
是否可以使用这种结构类型从没有变量的结构中调用方法?//models.gotype MyStruct struct {  id int  name string}func (s MyStruct) GetSomeAdditionalData() string {  return "additional data string"}//app.gofunc main() {  fmt.Println(models.MyStruct.GetSomeAdditionalData()) // not works  var variable models.MyStruct  fmt.Println(variable.GetSomeAdditionalData()) // it worked}或者也许 Go 有其他方法为结构添加一些数据?或者我选择了错误的方式来做到这一点?:)
查看完整描述

3 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

您可以使用结构文字或nil指针。


MyStruct{}.GetSomeAdditionalData()

(*MyStruct)(nil).GetSomeAdditionalData()


查看完整回答
反对 回复 2021-09-13
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您可以定义一个包函数(没有任何接收器)。

它不同于方法,因为方法需要接收器。


func GetSomeAdditionalData() string {

  return "additional data string"

}

您可以直接调用,无需任何结构实例MyStruct(因为您不需要任何MyStruct数据):


func main() {

  fmt.Println(models.GetSomeAdditionalData())

  fmt.Println(GetSomeAdditionalData())

(如果您已经在包裹中,则第二种形式有效models)


查看完整回答
反对 回复 2021-09-13
  • 3 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信