首頁 > 後端開發 > Golang > 如何簡化 Go 中的巢狀結構初始化?

如何簡化 Go 中的巢狀結構初始化?

Patricia Arquette
發布: 2024-12-11 00:32:11
原創
309 人瀏覽過

How Can I Simplify Nested Struct Initialization in Go?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板