Go で複数の戻り値を可変個引数関数に渡す
質問:
関数を使用できますか複数の整数値を返す場合は、フォーマットされた文字列の場合は fmt.Println() に直接渡されます。 Python に似た出力ですか?
func temp() (int, int) { return 1, 1 } fmt.Println("first= %d and second = %d", temp()) // Not supported
答え:
いいえ、これは Go のデフォルトでは直接サポートされていません。言語仕様によれば、「Calls」は ...interface{} のような可変個引数パラメータの唯一の引数として関数呼び出しを想定しており、関数には少なくとも 1 つの戻り値が必要です。
fmt.Printf(),ただし、可変個引数パラメーターと一緒にフォーマット文字列を使用できるため、このタスクにより適しています。ただし、temp() はタプルを返すため、...interface{} 引数として直接渡すことはできません。
解決策:
複数の戻り値を渡すには可変個引数関数に変換するには、ユーティリティ ラッパー関数を使用してタプルを []interface{} スライスに変換し、可変個引数として渡すことができます。以下は実装例です。
func wrap(vs ...interface{}) []interface{} { return vs }
このラッパー関数を使用すると、temp() 関数を fmt.Printf() に渡すことができます。
func main() { fmt.Printf("first= %v and second = %v", wrap(temp()...)...) }
これにより、 temp() の値。
以上がGo の `fmt.Println` は関数からの複数の戻り値を直接処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。