ホームページ >バックエンド開発 >Golang >Go の「...interface{}」 (可変個引数) はどのように機能しますか?

Go の「...interface{}」 (可変個引数) はどのように機能しますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-20 08:59:11514ブラウズ

How Does Go's `...interface{}` (Variadic Parameter) Work?

...interface の意味を理解する{} (Dot Dot Dot Interface)

Go では、可変個引数関数は、任意の数の入力引数を処理します。

func DPrintf(format string, a ...interface{}) (n int, err error)

などの可変個引数パラメーターを持つ関数を使用すると、任意の数の引数をパラメーターに渡すことができます。

Dot Dot Dot Interface (Variadic Parameter)

パラメータ型の前に使用される ... 表記は、可変個引数パラメータと呼ばれます。これは、関数が指定された型の可変数の引数を受け入れることができることを示します。この場合、パラメータは、interface{} 型の引数を期待します。

Interface

Go のインターフェイス型は、指定された値が適用されるメソッドのセットのコントラクトを定義します。実装する必要があります。インターフェイス{} タイプは、任意のタイプの値を保持できる特別なインターフェイスです。これはプレースホルダとして機能し、有効な Go 値を a パラメータに渡すことができます。

...インターフェースの使用法{}

3 つのドット ..インターフェイス タイプの前に次のことを示します:

  1. Variadic: a パラメータ任意の数の引数を受け入れることができます。
  2. インターフェイス値のスライス: 関数に渡される引数は、パラメータ内のインターフェイス値のスライスとして保存されます。
  3. 無制限の型: 引数は、interface{} インターフェースを実装する任意の型にすることができます。これは、本質的に任意の Go を意味します。 value.

次のコード スニペットは、...interface{} パラメータがどのように機能するかを示しています。

func main() {
    n, err := DPrintf("name: %s, age: %d", "John", 30)
}

Inこの例では、DPrintf 関数が 2 つの引数 (文字列と整数) を指定して呼び出されます。これらの引数は、interface{} 値のスライスにパッケージ化され、パラメータに渡されます。その後、関数は、文字列の場合は a[0]、整数の場合は a[1] など、スライス構文を使用してこれらの値にアクセスできます。

以上がGo の「...interface{}」 (可変個引数) はどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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