go - 变量

go 变量

特别注意事项:1. 在go中,声明一个局部变量却没有使用,依旧会报错!2. 而全局变量可以声明却不使用

尽管在go的数据类型中提到了很多的数据类型,但是并没有使用那些预定义的类型字段来作为声明一个变量的标识符;

go声明变量使用var关键字,如果看到这里,你可能会以为go语言是一门不具有类型检查的语言;但是这种声明变量的方式很奇怪,使用var+变量名之后,在最后指定变量的类型;与c语言对比,不同之处在于,go语言在一次性声明多个变量的时候,可以为变量指定不同的值,这一点应该是效仿python为变量赋值的方式。

指定类型的变量声明
var <变量名> [类型]
var <变量名>,<变量名2> [类型]
var <变量名>,<变量名2>,<...变量n> [类型] = <value1>, <value2>, <...value_n>

未指定类型的变量声明
var <变量名> = <value>

// 声明一组int型变量,且为其赋值;
var a,b,c int = 1,2,3;

声明且没有赋值的变量,拥有一个默认的初值,该值与其类型有关,比如bool默认为false;

1. nil

在python中,空类型用None表示;在c语言中,空类型用NULL表示;在go中,空类型用nil表示;

// 如下未赋值的类型,其默认值未nil
// int型指针,int型数组,map类型,channel类型,函数类型,接口类型
var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口

其中某些类型为什么是这种声明形式?暂时不懂

2. :=

这个运算符在python中被称作海象运算符,因为像一双眼睛和一对长牙组成的。

在go语言中,海象运算符的作用也是用来声明变量,相当于省略了var,左侧是变量,右侧是值;如果这个变量已经声明过了,那么编译就会报错。

// 声明my_name 且赋值 MachineKitty
my_name := "MachineKitty"

这种声明变量的方式只能够在函数体内使用;

3. 全局变量和局部变量

全局变量采用因式分解的写法:

// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

4. 值类型和引用类型

同c语言。

5. _

_只读,空白标识符,主要应用场景是用于抛弃某些函数的返回值。(并不一定需要所有的返回值,用来接受不需要的返回值)

猜你喜欢

转载自blog.csdn.net/qq_39378657/article/details/112644741