golang 变量

变量的声明,初始化

    // 声明变量
    // 方式1,var name type
    var name string
    var age int
    // 没有赋值,默认为该类型的零值,string的零值"",int的零值0
    fmt.Println(name,age)
    // 赋值
    name = "亚里士多德"
    age = 89
    fmt.Println(name,age)

    // 方式2,var name type = init value,声明变量时初始化化
    var birthday string = "2022-2-2"
    fmt.Println(birthday)

    // 方式3,var name = init value,类型推断。如果变量有初始化值,就可以在变量声明中省略type
    var height = 189
    fmt.Println(height)

    // 方式4,name := inti value,简短声明。所有变量必须有初始值
    student := "Hans"
    teacher,class := "Darse", 5
    fmt.Println(student)
    fmt.Println(teacher,class)

    // 声明多个变量
    var lenght,area int = 10,200
    fmt.Println(lenght,area)
    var (
        title = "且介亭杂文"
        author = "鲁迅"
        read = 100
    )
    fmt.Println(title,author,read)

零值

没有明确初始值的变量声明会被赋予它们的 零值。

零值是:

数值类型为 0,
布尔类型为 false,
字符串为 ""(空字符串)。

包级别变量,函数级别变量
包级别变量声明了可以不使用,运行时不会报错

package main

import "fmt"

var c, python, java bool

func main() {
    var i int
    fmt.Println(i, c, python)
}

函数级别变量声明后必须使用,否则报错

package main

import "fmt"

var c, python, java bool

func main() {
    var i int
    fmt.Println(c, python, java)
}

报错

./prog.go:8:6: i declared and not used

函数外的每个语句都必须以关键字开始(var, func 等等),因此 := 结构不能在函数外使用。

package main

import "fmt"

k := 3

func main() {
    var i, j int = 1, 2
    
    c, python, java := true, false, "no!"

    fmt.Println(i, j, k, c, python, java)
}

报错

./prog.go:5:1: syntax error: non-declaration statement outside function body
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容