Go 中嵌套結構的字面初始化
在Go 中實現複雜的資料結構時,初始化巢狀結構可能是一個挑戰。在某些情況下,需要直接初始化這些結構,而不明確定義每個嵌套層級。
問題陳述
考慮以下結構:
type tokenRequest struct { auth struct { identity struct { methods []string password struct { user struct { name string domain struct { id string } password string } } } } }
初始化這個結構的天真的嘗試可能看起來像this:
req := &tokenRequest{ auth: struct { identity: struct { methods: []string{"password"}, password: { user: { name: os.Username, domain: { id: "default", }, password: os.Password, }, }, }, }, }
解決方案:命名結構類型
簡化此初始化的關鍵是使用命名結構類型。這允許您定義一次結構並在多個地方使用它:
type domain struct { id string } type user struct { name string domain domain password string } type password struct { user user } type identity struct { methods []string password password } type auth struct { identity identity } type tokenRequest struct { auth auth }
使用命名結構類型,您現在可以直接初始化tokenRequest 結構:
req := &tokenRequest{ auth: auth{ identity: identity{ methods: []string{"password"}, password: password{ user: user{ name: os.Username, domain: domain{ id: "default", }, password: os.Password, }, }, }, }, }
這提供了在Go中初始化嵌套結構體的更直接、更簡潔的方法。
以上是如何簡化 Go 中的巢狀結構初始化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!