関数での名前付きフィールドの初期化
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(¶ms) }
ヘルパー関数の使用
別のアプローチは、名前付きフィールドを受け入れ、適切なパラメーターを使用して元の関数を内部で呼び出すラッパー関数。次のコード スニペットを検討してください。
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 サイトの他の関連記事を参照してください。