Go

RE:从零开始的Golang学习笔记(二)变量

参考:菜鸟教程&&Go系列教程

规范

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

变量声明

Go提供了多种语法来声明变量

var 变量名 类型

声明单个变量

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var name string
    fmt.Println(name)
        //reflect.TypeOf用来输出类型
    fmt.Println(reflect.TypeOf(name))
        name = "zhangsan"
    fmt.Println(name)
}

运行后得到变量类型为string,因为第一次打印前没有初始值,所以Println打印为空

func main() {
    var num string
    fmt.Println(num)
        //reflect.TypeOf用来输出类型
    fmt.Println(reflect.TypeOf(num))
        num = 10
    fmt.Println(name)
}

如果为int类型且没有初始值,则打印0
bool没有初始值,则打印false

var 变量名 = 变量值
虽然Golang是强类型语言,但如果声明变量时设定初始值,则不用写数据类型

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var name = "lisi"
    var num = 10
    fmt.Println(reflect.TypeOf(name))
    fmt.Println(reflect.TypeOf(num))
}

var 变量1,变量2 类型 = 变量值1,变量值2
Go可以同时声明多个变量

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var num1,num2 int = 20,10
    fmt.Println(num1)
    fmt.Println(num2)
    fmt.Println(reflect.TypeOf(num1))
    fmt.Println(reflect.TypeOf(num2))
}

和声明单个变量一样,有初始值可以省略

func main() {
    var name,num = "lisi",10
    fmt.Println(name)
    fmt.Println(num)
    fmt.Println(reflect.TypeOf(name))
    fmt.Println(reflect.TypeOf(num))
}

这种写法必须保证左侧所有变量都有或都没有初始值,否则会报错。
如果变量较多的情况下,可以采用下面的写法

func main() {
    var(
        name = "lisi"
        num = 10
        num1 int
    )
}

简短声明:变量 := 变量值

func main() {
    num := 10
    fmt.Println(num)
    fmt.Println(reflect.TypeOf(num))
}

这种写法也支持声明多个变量

func main() {
    num,name := 10,"lisi"
    fmt.Println(num)
    fmt.Println(name)
    fmt.Println(reflect.TypeOf(num))
    fmt.Println(reflect.TypeOf(name))
}

同样,这种写法必须保证左侧所有变量都有初始值,否则会报错。
此外,:= 的左边至少有一个变量是尚未声明的,如下

func main(){
    num,name := 10,"lisi"
    num,num1 := 20,30 //不会报错,因为num1没有被声明过
    name,num1 := 20,30 //报错,因为两个变量都被声明过
}

函数 main() 内声明的变量必须使用,函数外声明的变量可以不使用

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.