Go语言中的变量

(作者:全栈工程师开发手册

1. 变量声明方式
以下代码中展示了Go中的5种变量声明的方式,均在main函数中。

第一种,先声明变量类型,再给变量赋值。
第二种,在声明变量类型的同时,给变量赋值。
第三种,同时给两个类型相同的变量进行快速的声明和赋值。
第四种,同时给两个类型不同的变量进行快速的声明和赋值。
第五种,通过更简单的方式来声明变量,同时赋值,去掉了var关键字和类型的定义,编译器会自动判断变量的类型。这种声明方式只能在函数中使用。

package main

import (
    "fmt"
)


func main() {
    var a int
    a = 1

    var s string = "true"
    var b,c bool = true,false

    var (
        d float64 = 6.6
        arr = [4]int{0,1,2,3}
    )

    f := "shorter claim"

    fmt.Println(a,b,c,d,arr,s,f)
}

运行代码的结果如下:
在这里插入图片描述

2. 变量声明和赋值的禁忌
1) Go中的变量赋值对类型把控非常严格,整数只能赋值给整型变量,字符串只能赋值给字符串型变量。
2) Go中的变量不可重复声明,但可重复赋值,重复声明将会报错。如下:

package main

import (
    "fmt"
)


func main() {
    var s string = "true"
    var s string = "1"
    
    fmt.Println(s)
}

在这里插入图片描述
3. 不同类型变量的默认值
我们通过代码来看每种类型变量的默认值

package main

import (
    "fmt"
)


func main() {
    var a int
    var b float64
    var c string
    var d bool
    var f [4]string

    fmt.Println(a,b,c,d,f)
}

可以看到,整数和浮点数默认值为0,字符串的默认值为"",布尔型变量的默认值为false,数组的默认值根据数组元素的默认值来的。
在这里插入图片描述
4. 变量的作用域
1) Go语言中的,由块来定义变量的作用域,而块由花括号{}来定义;
2) 块可以进行嵌套,外部块不可引用内部块中定义的变量,但内部块可以引用外部块中定义的变量;
3) 无包含关系的块间定义的变量不能相互引用。

我们可以通过一个例子来看:

package main

import (
    "fmt"
)

var s string ="shorter claim"


func test() {
    b := true
    fmt.Println(s,b)
    fmt.Println(a)
}


func main() {
    test()
    a := 1
    fmt.Println(a,b,s)
}

其执行结果为:
在这里插入图片描述
在test中定义的变量b,在main中无法识别,在main中定义的变量a,在test中无法识别,我们做些改动,只在函数内部输出块内定义的变量和文件中在所有函数外定义的变量。

package main

import (
    "fmt"
)

var s string ="shorter claim"


func test() {
    b := true
    fmt.Println(s,b)
    // fmt.Println(a)
}


func main() {
    test()
    a := 1
    // fmt.Println(a,b,s)
    fmt.Println(a,s)

}

运行结果如下:
在这里插入图片描述
如此,可加深对变量作用域的理解。

5. 指针
Go语言在声明变量时,会在计算机内存中分配一个存储位置给变量,通过&符号可以获取到变量存储的位置,如变量a的位置用&a可获取,如果得到的参数是指针,想要获取其值,则用星号*可得到。下面用一段代码来理解:

package main

import (
    "fmt"
)


func test(a *int) {
    b := 2
    fmt.Println(a,*a)
    c := *a+b
    fmt.Println(c)
}


func main() {
    a := 1
    test(&a)
}

运行结果如下:
在这里插入图片描述
我们在main函数定义了一个变量a,然后将其指针&a传递给函数test,test中计算时,通过*a将入参指针指向的内存处的整数值取出,与整数b进行相加,得到整数c。

6. 常量的声明
常量可以声明,可以引用,但值不可修改。其声明与变量类似,只是关键字不同,如下:

var s string = "variable"
const sn string = "constant"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾讯AI架构师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值