欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-03 19:19:19
(一)Go语言变量Go 语言变量名由字母、数字、下划线组成,其中首个字母不能为数字。声明变量的一般形式是使用 var 关键字:var a type(1)变量声明:(分为三种)第一种:...

(一)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语言 linux