根据这个问题how-to-define-a-single-byte-variable-in-go-lang
在当地范围:
var c byte = 'A'
和
c := byte('A')
我的问题是:
答案 0 :(得分:2)
它们属于同一类型(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 .
“最好”是一种风格问题。哪个在给定的上下文中读得更好?
Alan A. A. Donovan·Brian W.Kernighan
由于它们的简洁性和灵活性,短变量 声明用于声明和初始化大多数本地 变量。 var声明倾向于为局部变量保留 需要一个与初始化程序不同的显式类型 表达式,或者稍后为变量赋值的时间 它的初始值并不重要。