go学习-变量定义

变量定义

  1. 变量申明使用var关键字,可以一次声明多个变量
  2. 变量名在前,变量类型在后,未初始化的变量必须指定变量类型
  3. 变量名由字母、数字、下划线组成,其中首个字符不能为数字
  4. 局部变量定义后必须在程序中使用
  5. 定义后未经初始化的变量,程序使用时,其值为系统默认的初值
  6. 可使用var()集中定义变量

样例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package main

import "fmt"

var (
a int
b string
c float64
d bool
)

func main () {
var p1, p2 *int
fmt.Printf("a, b, c, d, p1, p2 = %d, %q, %f, %t, %p, %p", a, b, c, d, p1, p2)

/* 错误使用:
var v //报错:syntax error: unexpected newline, expecting type
var unused int //报错:unused declared and not used
*/
}

输出结果:

1
a, b, c, d, p1, p2 = 0, "", 0.000000, false, 0x0, 0x0

变量初始化

  1. 未初始化的变量依然可以使用,其值为系统默认变量类型的初始值
  2. 定义变量的同时对变量进行初始化,变量类型可省略,系统会根据其初始化的值自动判定变量类型
  3. 省略var关键字,使用自动推导类型:=对变量进行初始化,同一变量只能使用一次自动推导类型
  4. 在函数体外只允许一种情况下的赋值操作,即变量定义的同时初始化。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import "fmt"

var out int
var out1 = "hi"

/* 错误使用
out2 := "I'm fine" //报错:syntax error: non-declaration statement outside function body

var out3 string
out3 = "And you?" //报错: syntax error: non-declaration statement outside function body
*/

func main () {
var a int // 未初始化的变量可以使用
var b string = "hello world" // 定义的同时初始化
var c, d = 1.23, true // 可省略变量类型,通过其值推导出变量类型
p := &a // 省略var关键字,使用自动推导定义及初始化
fmt.Printf("a, b, c, d, p = %d, %q, %f, %t, %p", a, b, c, d, p)


/* 错误使用:
a := 10 //报错:no new variables on left side of :=
p1 := &b //报错:unused declared and not used
*/
}

输出结果

1
a, b, c, d, p = 0, "hello world", 1.230000, true, 0xc0000160a0