爱收集资源网

关于Go语言全局变量的正确使用方式是什么?可一次定义多个

网络整理 2022-05-12 16:06

一、变量

Go 是静态类型的,不能在运行时更改变量的类型。

面试问题

关于全局变量的初始化,正确的使用方式如下

A. var i int = 10

B. var i = 10

C. 我 := 10

这是对 Go 语言中全局变量声明和赋值的检查。Go 语言中的变量声明使用关键字 var,例如:

var str string //声明变量

str = "test" //给变量赋值

这里var是定义变量的关键字,str是变量名,string是变量类型,=是赋值符号,“test”是值。上述程序分为两步,第一步是声明一个变量,第二步是给变量赋值。也可以将这两个步骤结合起来。

var str string = "测试"

变量使用关键字 var 定义,并自动初始化为零值。如果你提供了一个初始化值,你可以省略变量类型,它是由编译器自动推断的:

var str = "测试"

Go 语言还提供了一种更短的编写方式:

str := "测试"

相当于先执行 var str string 定义 str 变量,再执行 str = "test" 的赋值操作。

Go 语言全局变量不支持函数外赋值,例如:

var str string // 定义一个全局变量 str

str = "test" // 全局变量不支持此操作

因此,全局变量不支持 str := "test" 操作全局搜索声明是什么意思,该方法只支持局部变量操作。

功能主要(){

x := 123 // 注意检查,是定义新的局部变量还是修改全局变量。这种方法容易出错。

}

可以一次定义多个变量:

变量 x, y, z 整数

变量 s, n = "abc", 123

变量 (

一个整数

b 浮动32

)

功能主要(){

i, s := 123, "你好,世界!"

println(x, s, n)

}

多个变量赋值时,先计算所有相关值,然后从左到右依次赋值。

数据, i := [3]int{0, 1, 2}, 0

i, data[i] = 2, 100 // (i = 0) -> (i = 2), (data[0] = 100)

全局变量还支持如果一个变量需要依赖其他变量,则先初始化因变量

变量测试1 = 测试2

var test2 = "test2"

二、常数

全局搜索声明是什么意思

常量值必须是编译时可确定的数字、字符串或布尔值。

const x, y int = 1, 2 // 多个常量初始化

const s = "你好,世界!" // 类型推断

const ( // 常量组

a, b = 10, 100

c 布尔 = 假

)

在 Go 语言中,不使用局部变量时会出现编译错误,但不使用局部常量时不会出现编译错误。

在常量组中,如果没有提供类型和初始化值,则与之前的常量值一样对待。

常量 (

s = "abc"

x // x = "abc"

)

常量值也可以是函数的返回值,其结果可以在编译时确定,如len、cap、unsafe.Sizeof等。

常量 (

a = "ABC"

b = 长度 (a)

c = unsafe.Sizeof(b)

)

如果常量类型足够大以存储初始化值,则不会引发溢出错误。

常量 (

a byte = 100 // int 到字节

b int = 1e20 // float64 转 int,溢出

)

面试问题:

对于常量定义 zero(const zero = 0.0)全局搜索声明是什么意思,zero 是浮点常量,说话时正确。(false)

Go 语言常量有一些不寻常的地方。尽管常量可以有任何明确的类型,例如 int 或 float64,但许多常量没有明确的基本类型。提供比基础类型更高的算术运算。有六种无类型变量类型,即无类型布尔、无类型整数、无类型字符、无类型浮点、无类型复数和无类型字符串。

枚举

关键字 iota 在常量组中定义了一个从 0 开始的、行计数的、自增的枚举值。

常量 (

星期日 = iota // 0

Monday // 1,通常省略后续的行表达式。

星期二 // 2

星期三 // 3

星期四 // 4

星期五 // 5

星期六 // 6

)

常量 (

= iota // iota = 0

KB int64 = 1

go语言 常量与变量 str函数