2 回答

TA貢獻1993條經驗 獲得超6個贊
使用 2 個string返回值實現
它可能看起來像這樣:
func t(test bool, true1, true2, false1, false2 string) (string, string) {
if test {
return true1, true2
}
return false1, false2
}
測試它:
a1, a2 := t(false, "hi", "hello", "bye", "goodbye")
fmt.Println(a1, a2)
a1, a2 = t(true, "hi", "hello", "bye", "goodbye")
fmt.Println(a1, a2)
輸出(在Go Playground上試試):
bye goodbye
hi hello
使用切片[]string返回值實現
這可能是更容易閱讀和使用,如果我們有實現它的工作string片:[]string。
func t(test bool, trueVal []string, falseVal []string) []string {
if test {
return trueVal
}
return falseVal
}
測試它:
trueVal := []string{"hi", "hello"}
falseVal := []string{"bye", "goodbye"}
a := t(false, trueVal, falseVal)
fmt.Println(a)
a = t(true, trueVal, falseVal)
fmt.Println(a)
輸出(在Go Playground上試試):
[bye goodbye]
[hi hello]
使用包裝器struct返回值實現
您還可以選擇創建一個包裝器struct來保存任意數量的值(甚至具有任意/不同類型):
type Pair struct {
v1, v2 string
}
func t(test bool, trueVal Pair, falseVal Pair) Pair {
if test {
return trueVal
}
return falseVal
}
測試它:
trueVal := Pair{"hi", "hello"}
falseVal := Pair{"bye", "goodbye"}
a := t(false, trueVal, falseVal)
fmt.Println(a)
a = t(true, trueVal, falseVal)
fmt.Println(a)
輸出(在Go Playground上試試):
{bye goodbye}
{hi hello}

TA貢獻1836條經驗 獲得超5個贊
您可以使用數組(如果數字是可變的,甚至可以使用切片):
func iff(test bool, true_val, false_val [2]string) (string, string) {
if test {
return true_val[0], true_val[1]
}
return false_val[0], false_val[1]
}
測試:
func main() {
a, b := iff(false, [2]string{"hi", "hello"}, [2]string{"bye", "goodbye"})
fmt.Println(a, b)
a, b = iff(true, [2]string{"hi", "hello"}, [2]string{"bye", "goodbye"})
fmt.Println(a, b)
}
- 2 回答
- 0 關注
- 243 瀏覽
添加回答
舉報