ホームページ > バックエンド開発 > Golang > Go の可変個引数関数では列挙型引数と既存のスライスを混在させることができますか?

Go の可変個引数関数では列挙型引数と既存のスライスを混在させることができますか?

DDD
リリース: 2024-12-13 07:22:12
オリジナル
919 人が閲覧しました

Can Go Variadic Functions Mix Enumerated Arguments and Existing Slices?

可変個引数関数での「展開」スライスと通常のパラメーターの混合

Go では、可変個引数関数で任意の数の引数を使用できます。ただし、引数を指定するときに列挙型要素と既存のスライスの両方を結合することはできません。

可変個引数の構文

可変個引数パラメーターに渡される値は、次のいずれかです。

  1. で指定: 個々の要素を列挙: func(arg1, arg2, arg3 ...string) {}
  2. 既存のスライスの使用: func(s []string) {}

列挙型要素とスライスの混合

次のコードは、コンパイル:

func main() {
    stuff := []string{"baz", "bla"}
    foo("bar", stuff...) // compile error: too many arguments
}

func foo(s ...string) {}
ログイン後にコピー

これは、Go では 2 つの構文を混合することが許可されていないためです。個々の要素を列挙すると、新しいスライスが作成されます。既存のスライスを使用する場合、同じスライスが可変個引数パラメータとして使用されます。

制限の理由

この制限は、Go が可変個引数を処理する方法によるものです。要素を列挙すると、値を保持するために新しいスライスが作成されます。ただし、既存のスライスが渡された場合、新しいスライスは作成されません。代わりに、渡されたスライスは可変個引数パラメーターに直接割り当てられます。 2 つを混合するには、新しいスライスを割り当てる必要がありますが、現在サポートされていません。

以上がGo の可変個引数関数では列挙型引数と既存のスライスを混在させることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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