是否可以使用這種結構類型從沒有變量的結構中調用方法?//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 關注
- 188 瀏覽
添加回答
舉報
0/150
提交
取消