gpt4 book ai didi

go - Go中一行多个不同类型的变量(没有简短的变量声明语法)

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

我想知道 Go 是否有一种方法可以在不使用短声明语法 := 的情况下在一行中声明和初始化多个不同类型的变量。

例如声明两个相同类型的变量是可能的:

var a, b string = "hello", "world"

也可以使用 := 语法声明不同类型的变量:

c, d, e := 1, 2, "whatever"

这反而给我一个错误:

var f int, g string = 1, "test"

当然我想保留类型,否则我可以只使用 := 语法。

很遗憾,我找不到任何示例,所以我假设这是不可能的?

如果没有,有人知道是否有计划在未来的版本中引入这种语法吗?

最佳答案

如果您省略类型,则有可能:

var i, s = 2, "hi"
fmt.Println(i, s)

输出(在 Go Playground 上尝试):

2 hi

请注意 short variable declaration正是这个的简写:

A short variable declaration uses the syntax:

ShortVarDecl = IdentifierList ":=" ExpressionList .

It is shorthand for a regular variable declaration with initializer expressions but no types:

"var" IdentifierList = ExpressionList .

不省略类型是不可能的,因为 variable declaration 的语法是:

VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .

(标识符列表和表达式列表只有一种可选类型。)

我还假设你不把它算作 1 行(否则它是有效的语法,但 gofmt 将它分成多行):

var (i int = 2; s string = "hi")

此外,如果您只想明确说明类型,您可以在右侧提供它们:

var i, s = int(2), string("hi")

但总而言之,只需为 2 种不同的类型使用 2 行,没有任何损失,可读性获胜。

关于go - Go中一行多个不同类型的变量(没有简短的变量声明语法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45086082/

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