登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-04-14 20:36:02 232浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《Go中一行不同类型的多个变量(没有短变量声明语法)》,文章讲解的知识点主要包括golang,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我想知道 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

请注意,短变量声明正是这个的简写:

简短的 变量声明 使用以下语法:

ShortVarDecl = IdentifierList ":=" ExpressionList .

它是带有初始化表达式但没有类型的常规变量声明的简写:

"var" IdentifierList = ExpressionList .

不省略类型是不可能的,因为变量声明的语法是:

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

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

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

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

此外,如果您只想能够显式声明类型,您可以在右侧提供它们:

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

但总而言之,只需将 2 行用于 2 种不同的类型,没有什么可失去的,可读性是胜利的。

本篇关于《Go中一行不同类型的多个变量(没有短变量声明语法)》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表