ホームページ >バックエンド開発 >Golang >Go で名前付き関数の引数をシミュレートするにはどうすればよいですか?

Go で名前付き関数の引数をシミュレートするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-26 13:00:14358ブラウズ

How Can I Simulate Named Function Arguments in Go?

フィールド名による関数の引数の受け渡し

Go では、関数呼び出しでは、引数を関数パラメーターと同じ順序でリストする必要があります。ただし、次のように引数を名前で明示的に指定することもできます:

MyFunction(name: "Bob", address: "New York", nick: "Builder", age: 30, value: 1000)

非名前付き引数はサポートされていません

残念ながら、Go は名前付き引数をサポートしていません機能用。 Go 仕様で述べられているように、すべての非可変引数パラメーターに対して予想される順序で値を指定する必要があります。

オプション 1: 構造体ラッパーを使用する

名前付きを模倣するには引数を使用すると、関数パラメータをラップする構造体を作成できます:

type Params struct {
    name, address, nick string
    age, value          int
}

func MyFunction(p Params) {
    // perform some operations using p.name, p.address, etc.
}

func main() {
    MyFunction(Params{
        name:    "Bob",
        address: "New York",
        nick:    "Builder",
        age:     30,
        value:   1000,
    })
}

Option 2: ヘルパー関数を使用する

元の関数を変更できない場合は、構造体パラメーターを受け取り、適切なフィールドを引数として元の関数を呼び出すヘルパー関数を作成します。

func MyFunction2(p Params) {
    MyFunction(p.name, p.address, p.nick, p.age, p.value)
}

func main() {
    MyFunction2(Params{
        name:    "Bob",
        address: "New York",
        nick:    "Builder",
        age:     30,
        value:   1000,
    })
}

以上がGo で名前付き関数の引数をシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。