Go では、関数は複数の値を返すことができます。ただし、fmt.Println() の呼び出しで関数の戻り値を書式文字列に直接割り当てることは、デフォルトでは不可能です。
実現するには望ましい動作を実現するには、fmt.Println() の代わりに fmt.Printf() を使用する必要があります。ただし、関数呼び出し以外に追加のパラメーターを渡すことは、可変個引数関数呼び出しの仕様で許可されていません。
この制限を回避するには、ラッパー関数を使用できます。 Wrap() 関数は複数の値を受け取り、interface{} 値のスライスとして返します。これにより、少なくとも 1 つの戻り値を持つ関数の戻り値を fmt.Printf() に渡すことができます。
package main import ( "fmt" ) // Wrapper function to convert multiple values to a slice of interface{} func wrap(vs ...interface{}) []interface{} { return vs } func main() { fmt.Printf("1: %v\n", wrap(oneInt())...) fmt.Printf("1: %v, 2: %v\n", wrap(twoInts())...) fmt.Printf("1: %v, 2: %v, 3: %v\n", wrap(threeStrings())...) } func oneInt() int { return 1 } func twoInts() (int, int) { return 1, 2 } func threeStrings() (string, string, string) { return "1", "2", "3" }
1: 1 1: 1, 2: 2 1: 1, 2: 2, 3: 3
wrap() 関数を使用すると、関数の複数の戻り値を次のような可変個引数関数に渡すことができます。 fmt.Printf()。これにより、関数呼び出しの結果をフォーマットして出力する簡単で便利な方法が提供されます。
以上がfmt.Printf() を使用して Go 関数から複数の戻り値を出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。