Go语言学习之路:Go语言中的变量、常量

2022-07-27,,,,

(一)Go语言变量

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

声明变量的一般形式是使用 var 关键字:

var a type

1、单变量声明:(分为三种)

全局变量:

第一种:指定变量类型,声明后若不赋值,使用默认值。

var v bool
v = true/false

第二种:根据值自行判定变量类型。

var v = 3

局部变量:

第三种:简短格式,省略var关键字。
(注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。

并且有以下限制性:
定义变量,同时显式初始化。
不能提供数据类型。
只能用在函数内部。)

v_name := value

以上三种定义变量方式举例如下:

var a int = 10
var b = 10
c : = 10

2、多变量声明:

//类型相同的多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

//自动分配类型
var vname1, vname2, vname3 = v1, v2, v3

//出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误
vname1, vname2, vname3 := v1, v2, v3

//类型不同的多个变量, 全局变量, 局部变量不能使用这种方式:
var (
vname1 v_type1
vname2 v_type2
)

3、匿名变量:

匿名变量“_”:使用匿名变量时,只需要在变量声明的地方使用下画线替换即可。

例如:

func GetData() (int, int) {
    return 100, 200
}
func main(){
    a, _ := GetData()
    _, b := GetData()
    fmt.Println(a, b)
}
代码运行结果:
100 200

4、变量的生命周期:

变量的生命周期和作用域息息相关:

全局变量:它的生命周期和整个程序的运行周期是一致的;

局部变量:它的生命周期则是动态的,从创建这个变量的声明语句开始,到这个变量不再被引用为止;

形式参数和函数返回值:它们都属于局部变量,在函数被调用的时候创建,函数调用结束后被销毁。

(二)Go语言常量

1、Go语言中的常量使用关键字 const 定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式。

例如:

显式类型定义: const a string = “abc”
隐式类型定义: const a = “abc”

2、iota 常量生成器:

常量声明可以使用 iota 常量生成器初始化,它用于生成一组以相似规则初始化的常量,但是不用每行都写一遍初始化表达式。在一个 const 声明语句中,在第一个声明的常量所在的行,iota 将会被置为 0,然后在每一个有常量声明的行加一。

例如:首先定义一个 Weekday 命名类型,然后为一周的每天定义了一个常量,从周日 0 开始。在其它编程语言中,这种类型一般被称为枚举类型。

package main

import "fmt"

func main(){
        fmt.Println(b)
        type Weekday int
        const (
        Sunday Weekday = iota   //第一行定义值为0,以此类推
        Monday
        Tuesday
        Wednesday
        Thursday
        Friday
        Saturday
        )
        fmt.Println(Friday)
}

运行结果为:

5

(三)拓展

Go语言整型:

int(有符号整型)、uint(无符号整型)

哪些情况下使用 int 和 uint:

程序逻辑对整型范围没有特殊需求。例如,对象的长度使用内建 len() 函数返回,这个长度可以根据不同平台的字节长度进行变化。实际使用中,切片或 map 的元素数量等都可以用 int 来表示。

反之,在二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用 int 和 uint。

本文地址:https://blog.csdn.net/weixin_45432093/article/details/109338605

《Go语言学习之路:Go语言中的变量、常量.doc》

下载本文的Word格式文档,以方便收藏与打印。