1. 用关键词var进行声明
var name type = expression
var后面跟着变量名name,变量类型type和变量初始值expression。Go语言带有零值机制,能够自动对没有显式赋值的变量进行零值初始化。Go语言里不存在未经初始化的变量。
var s string
fmt.Println(s) // ""
我们也可以同时声明多个变量。
var i, j, k int // int, int, int
var b, f, s = true, 2.3, "four" // bool, float64, string
省略类型并同时对多个变量进行显式初始化,Go会自动从初始值的类型推断变量的类型。
函数的返回值也可以用来初始化变量。
var f, err = os.Open(name) // os.Open returns a file and an error
2. 简短变量声明
简短变量声明用于声明大部分的局部变量。简短变量声明可以用这样的表达式表示。
name := expression
具体的例子如下:
anim := gif.GIF{LoopCount: nframes}
freq := rand.Float64() * 3.0
t := 0.0
函数返回值也可以用在简短声明中。
f, err := os.Open(name)
if err != nil {
return err
}
f.Close()
在多变量的简短声明中至少需要有一个变量是没有声明过的,这意味着Go允许多个变量中存在已经声明过的变量。
3. new 内置函数
new(T)表达式可以创建一个类型为T的无名变量,进行零值初始化后返回变量的地址,即类型*T。
p := new(int) // p, 类型 *int
fmt.Println(*p) // 输出"0"
*p = 2 // 赋值为2
fmt.Println(*p) // 输出“2”
new作为内置函数,可以在局部被相同名字的变量覆盖。
func delta(old, new int) int {return new - old}
上面函数内部new是int类型变量,内置函数new无法使用,这在语法上是合法的。
new函数用于初始化出现频率不高。
132

被折叠的 条评论
为什么被折叠?



