1. ホーム
  2. go

[解決済み] ネストした構造体を初期化する方法は?

2022-04-24 22:40:56

質問

ネストした構造体を初期化する方法がわかりません。ここに例があります。 http://play.golang.org/p/NL6VXdHrjh

package main

type Configuration struct {
    Val   string
    Proxy struct {
        Address string
        Port    string
    }
}

func main() {

    c := &Configuration{
        Val: "test",
        Proxy: {
            Address: "addr",
            Port:    "80",
        }
    }

}

解決方法は?

さて、Proxyを独自の構造体にしない具体的な理由は何でしょうか?

いずれにせよ、2つの選択肢があります。

正しい方法は、例えばプロキシをそれ自身の構造体に単純に移動することです。

type Configuration struct {
    Val string
    Proxy Proxy
}

type Proxy struct {
    Address string
    Port    string
}

func main() {

    c := &Configuration{
        Val: "test",
        Proxy: Proxy{
            Address: "addr",
            Port:    "port",
        },
    }
    fmt.Println(c)
    fmt.Println(c.Proxy.Address)
}

あまり適切でなく、醜い方法ですが、まだ動作します。

c := &Configuration{
    Val: "test",
    Proxy: struct {
        Address string
        Port    string
    }{
        Address: "addr",
        Port:    "80",
    },
}