gpt4 book ai didi

go - 在 Go 中,如何编写接受元组参数的函数?

转载 作者:IT王子 更新时间:2023-10-29 01:42:15 25 4
gpt4 key购买 nike

我是 Go 的新手,我正在将 Python 程序翻译成 Go。

我是三元运算符的忠实粉丝,所以我很快就实现了

func t2(test bool, true_val, false_val string) string {
if test {
return true_val
} else {
return false_val
}
}

效果很好。

不幸的是,我在 Python 中有这个:a = 'hi', 'hello' if xxx else 'bye', 'goodbye'

如何为字符串元组编写三元运算符?

我试过:

  • 泛型但了解到它们在 Go 中不存在
  • 执行 func t2(test bool, true_val, false_val (string, string)) (string, string) 但它不编译
  • typedef: type s2 string, string and func t2(test bool, true_val, false_val s2) s2 但它不编译

谢谢

最佳答案

用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

用 slice []string返回值实现

如果我们用 string slice 来实现它可能会更容易阅读和使用:[]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}

关于go - 在 Go 中,如何编写接受元组参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36530175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com