ホームページ >バックエンド開発 >Golang >スライスを使用して Go の Sprintf 関数に複数の変数を渡す方法

スライスを使用して Go の Sprintf 関数に複数の変数を渡す方法

DDD
DDDオリジナル
2024-10-29 10:01:291042ブラウズ

How to Pass Multiple Variables to Go's Sprintf Function Using a Slice?

入力を簡略化するための Go の Sprintf の変数パラメーター

問題:

利便性を重視する場合は、複数の変数をSprintf 関数は退屈な場合があります。文字列のスライスを使用してこれを実行しようとすると、「fmt.Printf への引数で v (type []string) を type []interface {} として使用できません」のようなエラーが発生することがあります。

解決策:

この問題を解決するには、スライスを []interface{} として宣言し、Sprintf の予期される引数の型に合わせます。 Sprintf の署名は次のように指定します:

<code class="go">func Printf(format string, a ...interface{}) (n int, err error)</code>

実装:

<code class="go">s := []interface{}{"a", "b", "c", "d"}
fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3])

v := s[1:]
fmt.Printf("%5s %4s %3s\n", v...)</code>

説明:

  • []インターフェース{} と []string は相互変換できません。
  • []string がある場合、またはそれを返す関数を使用している場合は、要素を反復処理して各文字列をInterface{} 要素。

出力:

b    c   d
b    c   d

追加メモ:

必要な場合パラメータが 10 を超える場合は、必要に応じてスライス内の要素の数を調整するだけです。解決策は変わりません。

以上がスライスを使用して Go の Sprintf 関数に複数の変数を渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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