我想創建一個基本結構,它必須有方法,我想在子結構中使用這些方法。例如:Golang基礎結構來定義子結構中的方法
type Base struct {
Type string `json:"$type"`
}
func (b Base) GetJSON() ([]byte, error) {
return json.Marshal(b)
}
func (b Base) SetType(typeStr string) interface{} {
b.Type = typeStr
return b
}
在新的結構我想用這樣的:
type Auth struct {
Base
Username
Password
}
,並呼籲在主這些方法:
func main() {
a := Auth{
Username: "Test",
Password: "test",
}
a = a.SetType("testtype").(Auth)
j, _ := a.GetJSON()
}
在的setType情況下,我得到了由接口{}導致的恐慌不是Auth
類型,它是Base
類型。 在GetJSON的情況下,我得到了一個有關類型的JSON,但只有類型。
問題是否有解決方案,我想解決什麼問題?
'返回b.Type = typeStr'不是一個有效的GO語句。如果這就是你想要做的,Base不會有'用戶名'和'密碼'字段。 Go中沒有繼承。 – JimB
我建議完全從Go角度重新考慮您的設計。 Go不是一種面向對象的語言。它沒有繼承,也沒有接口之外的多態。 – Adrian
是的,我知道,但是人們如何解決給定的問題,我有359個結構都使用相同的方法,我應該把它們寫入所有的? – PumpkinSeed