是否可以使用这种结构类型从没有变量的结构中调用方法?//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()
慕妹3242003
TA贡献1824条经验 获得超6个赞
您可以定义一个包函数(没有任何接收器)。
它不同于方法,因为方法需要接收器。
func GetSomeAdditionalData() string {
return "additional data string"
}
您可以直接调用,无需任何结构实例MyStruct(因为您不需要任何MyStruct数据):
func main() {
fmt.Println(models.GetSomeAdditionalData())
fmt.Println(GetSomeAdditionalData())
(如果您已经在包裹中,则第二种形式有效models)
- 3 回答
- 0 关注
- 171 浏览
添加回答
举报
0/150
提交
取消