变量定义

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

样例代码:

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
     */
}

输出结果:

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

变量初始化

  1. 未初始化的变量依然可以使用,其值为系统默认变量类型的初始值
  2. 定义变量的同时对变量进行初始化,变量类型可省略,系统会根据其初始化的值自动判定变量类型
  3. 省略var关键字,使用自动推导类型:=对变量进行初始化,同一变量只能使用一次自动推导类型
  4. 在函数体外只允许一种情况下的赋值操作,即变量定义的同时初始化。
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
     */
}

输出结果

a, b, c, d, p = 0, "hello world", 1.230000, true, 0xc0000160a0
Copyright © itrunner.cn 2020 all right reserved,powered by Gitbook该文章修订时间: 2022-08-28 07:44:16

results matching ""

    No results matching ""