为了账号安全,请及时绑定邮箱和手机立即绑定

Go中局部范围内“变量声明”和“短变量声明”的区别

Go中局部范围内“变量声明”和“短变量声明”的区别

Go
德玛西亚99 2021-12-07 15:13:00
根据这个问题how-to-define-a-single-byte-variable-in-go-lang在本地范围内:var c byte = 'A'和c := byte('A')我的问题是:他们有相同的机制吗?哪个更容易被 go 编译器理解?
查看完整描述

1 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

它们是相同的类型(byte是 的别名uint8)和值。例如,


package main


import "fmt"


func main() {

    var c byte = 'A'

    d := byte('A')

    fmt.Printf("c: %[1]T %[1]v d: %[2]T %[2]v c==d: %v", c, d, c == d)

}

输出:


c: uint8 65 d: uint8 65 c==d: true

它们同样有效;运行时代码是相同的。它们都很容易被 Go 编译器理解。


Go 编程语言规范。


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


ShortVarDecl = IdentifierList ":=" ExpressionList .

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


"var" IdentifierList = ExpressionList .

“最好”是风格问题。在给定的上下文中哪个读起来更好?


Go 编程语言


艾伦·多诺万·布莱恩·W·克尼汉


由于其简洁性和灵活性,短变量声明用于声明和初始化大多数局部变量。var 声明往往是为需要与初始化表达式不同的显式类型的局部变量保留的,或者用于稍后为变量分配值且其初始值不重要的情况。


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信