ibeautiful
使用 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 goodbyehi 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}
一只甜甜圈
您可以使用数组(如果数字是可变的,甚至可以使用切片):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)}