ホームページ > バックエンド開発 > Golang > Go 関数呼び出しで名前付きフィールドの初期化を実現するにはどうすればよいですか?

Go 関数呼び出しで名前付きフィールドの初期化を実現するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-13 05:35:09
オリジナル
503 人が閲覧しました

How Can I Achieve Named Field Initialization in Go Function Calls?

関数での名前付きフィールドの初期化

Go で関数を定義する場合、それぞれの型を使用してパラメーターを指定するのが一般的です。ただし、読みやすさと明確さのために、名前を使用して関数のフィールドを初期化することが望ましい場合があります。

残念ながら、Go は関数呼び出し内での名前付きフィールドの直接の初期化をサポートしていません。代わりに、値は予期された順序で指定する必要があります。

この制限を克服するには、次のアプローチを検討してください。

Struct の使用

A一般的な解決策は、関数のフィールドをカプセル化する構造体を作成することです。次の例に示すように、構造体へのポインターを受け入れるように関数を変更します。

import "fmt"

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

func MyFunction(p *Params) {
    // Perform operations here
    fmt.Printf("%s lives in %s.\n", p.name, p.address)
}

func main() {
    params := Params{
        name:    "Bob",
        address: "New York",
        nick:    "Builder",
        age:     30,
        value:   1000,
    }
    MyFunction(&params)
}
ログイン後にコピー

ヘルパー関数の使用

別のアプローチは、名前付きフィールドを受け入れ、適切なパラメーターを使用して元の関数を内部で呼び出すラッパー関数。次のコード スニペットを検討してください。

import "fmt"

func MyFunction(name, address, nick string, age, value int) {
    // Perform operations here
    fmt.Printf("%s lives in %s.\n", name, address)
}

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

func main() {
    params := Params{
        name:    "Alice",
        address: "Washington",
    }
    MyFunction2(params)
}
ログイン後にコピー

結論として、Go は関数呼び出しでの名前付きフィールドの初期化を直接サポートしていませんが、構造体を利用するかヘルパー関数を作成することで、これらの特定の状況に対する回避策を提供できます。

以上がGo 関数呼び出しで名前付きフィールドの初期化を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート