【发布时间】:2016-01-24 00:49:59
【问题描述】:
根据这个问题how-to-define-a-single-byte-variable-in-go-lang
在本地范围内:
var c byte = 'A'
和
c := byte('A')
我的问题是:
- 它们有相同的机制吗?
- 哪一个更容易被 go 编译器理解?
【问题讨论】:
标签: go variable-assignment declaration
根据这个问题how-to-define-a-single-byte-variable-in-go-lang
在本地范围内:
var c byte = 'A'
和
c := byte('A')
我的问题是:
【问题讨论】:
标签: go variable-assignment declaration
它们是相同的类型(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 编译器理解。
The Go Programming Language Specification.
简短的变量声明使用以下语法:
ShortVarDecl = IdentifierList ":=" ExpressionList .它是带有初始化程序的常规变量声明的简写 表达式但没有类型:
"var" IdentifierList = ExpressionList .
“最好”是一种风格。在给定的上下文中哪个读起来更好?
艾伦 A. A. 多诺万 · 布赖恩 W.Kernighan
由于它们的简洁性和灵活性,短变量 声明用于声明和初始化大部分本地 变量。 var 声明往往是为局部变量保留的 需要与初始化程序不同的显式类型 表达式,或者当变量稍后被赋值时 它的初始值并不重要。
【讨论】: