Go语言 变量

变量是在编程语言中通过名字可以访问的一块内存空间,里面存储的数据可以在程序运行时修改。这个变量的名字称为变量名。

Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。

 

1. 声明变量的语法

var identifier type

可以一次声明多个变量:

var identifier1, identifier2 type
package main
import "fmt"
func main() {
    var s string = test"
    fmt.Println(a)

    var a, b int = 1, 2
    fmt.Println(a, b)
}

以上实例输出结果为:

test
1 2

 

2. 声明变量的形式

1)变量指定类型,不指定初值

var v_name v_type

如果变量声明没有指定变量的初值,则变量值自动设置为系统默认值。不同的变量类型有不同的默认值。

package main
import "fmt"
func main() {

    // 字符串变量未指定初值,默认值为空
    var a
    fmt.Println(a)

    // 整型变量未指定初值,默认值为0
    var b int
    fmt.Println(b)

    // 布尔型变量未指定初值,默认值为false
    var c bool
    fmt.Println(c)
}

以上实例执行结果为:


0
false

各类型变量的系统默认值:

  • 数值类型为 0
  • 布尔类型为 false
  • 字符串为 ""(空字符串)
  • 以下几种类型为 nil
    var a *int  // 指针
    var a []int // 切片
    var a map[string] int // 字典
    var a chan int  // 通道
    var a func(string) int // 函数
    var a interface{}  // 接口
    

变量指定类型,不指定初值的范例:

package main

import "fmt"

func main() {
    var i int
    var f float64
    var b bool
    var s string
    fmt.Printf("%v %v %v %v\n", i, f, b, s)
}

输出结果是:

0 0 false ""

2)变量不指定类型,指定初值

var v_name = value

编译程序根据初值自行推断变量类型。

package main
import "fmt"
func main() {
    var d = true
    fmt.Println(d)
}

编译程序推断变量d为布尔类型,输出结果是:true。

3)省略 var,通过赋值指定初值

v_name := value

编译程序根据初值自行推断变量类型。

可以将 var f string = "test" 简写为 f := "test":

package main
import "fmt"
func main() {
    f := "test" // var f string = "test"
    fmt.Println(f)
}

输出结果是:test。

4)多变量声明

//类型相同多个变量, 非全局变量
var vname1, vname2 type
vname1, vname2 = v1, v2
var vname1, vname2 = v1, v2 // 和 python 很像,不需要显示声明类型,自动推断
vname1, vname2 := v1, v2 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误

// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

多变量声明的范例:

package main

var x, y int
var (
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//这种不带声明格式的只能在函数体中出现
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    println(x, y, a, b, c, d, e, f, g, h)
}

以上实例执行结果为:

0 0 0 false 1 2 123 hello 123 hello

Go语言 常量:常量是在编程语言中,通过名字可以访问的一个数据,里面存储的数据在程序运行时不能修改。Go语言的常量关键字是const,常量的数值在编译阶段就已经确定。Go语言中常量的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。常量用于枚举。