Go 语言学习2-变量常量与类型

xiaoxiao2021-02-28  29

Go的值与变量常量

变量

使用var命令声明一个或者多个变量 格式:var identifier type 注意的是,与大部分语言不同的是,类型的位置在后面。这也是go一贯的写法,类型名总在变量名,形参名,函数名的后面

// 类型可以省略,因为如果初始的时候有赋值的话,go会自动推测类型

:= 语句是申明并初始化变量的简写 var f string = "short"等同f := "short"

可以用小括号将一组要声明的变量包起来:

var ( a int b string c bool d float e string = "have a nice day ~" )

而定义时,可以不给赋值,变量会被默认初始化为0, “”, false, 0.000000等默认值

常量

const identifier [type] = value

类型可以省略,因为会自动根据value来推导类型 常量必须被初始化一个值

const ( a int = 100 b // b 会等于 a c int = 200 d // d 会等于 c )

iota

iota在const关键字出现时将被重置为0,而后每一行会递增一次,常用来简化定义。

const ( a = iota // b // 等同于 b = iota c // c = iota d // d = iota )

上面的代码,因为如果一行没有赋值,就等于跟上一行是相同的赋值,所以上面的代码等同于每一行都是赋给了iota的值。然后iota 等于把a赋值为0,然后每一行会递增的得到了1,2,3

const ( a = 2 << iota b c d ) // 结果 // a = 0 // b = 4 // c = 8 // d = 16

go的枚举

在常量表达式里面,我们可以使用iota来实现类似枚举的递增效果。

type Weekday int const ( Monday Weekday = iota + 1 Tuesday Wednesday Thursday Friday )

这样我们就实现了一个类似枚举类型的效果。

可跳过的值

如果我需要的一组值是0,1,2,4,5没有三,那么其实我们可以跳过不想要的值

type Weekday int const ( Monday Weekday = iota + 1 _ Wednesday _ Friday )

比如我们只关心周一周三周五的话,我们可以使用下划线跳过一些值。

更详细的golang中使用iota的用法和例子

类型

go有字符串,整形,浮点型,布尔型等等基本类型

整形

int8,int16,int32,int64,uint8,uint16,uint32,uint64,int,uint,rune,byte,uintptr 后面有位数的代表了bit数量,前面u开头的是无符号数,没有后面的位数与cpu位数有关 rune等同于int32,byte等价于int8 uintptr用来保存一个指针的大小用于底层编程 所有整形的默认值都是0 强类型语言,虽然这些都是整形,但是不能直接相互赋值,需要显示类型转换。(int)

浮点数

float32和float64

复数

complex64和complex128

复数比较时,只有实部虚部完全相等才是等于。

布尔类型

只有true false两种可能的值的类型 使用bool关键字声明,可以进行逻辑运算,未赋值的默认值为false,格式化输出占位符是%t 注意在进行与操作的时候有与短路:第一个表达式为false时不会计算第二个表达式;同意存在或短路,第一个表达式为真时不会计算后一个表达式;

字符串

有两种表示方式,双引号,反引号,反引号包裹的字符串不支持控制转义字符,会原样输出。 len返回字节数,也可以用[i]访问i字节 +操作可以直接用来衔接字符串 切片,一种类似数组的结构,字符串的一些方法会返回slice,更灵活

参考学习

转载请注明原文地址: https://www.6miu.com/read-2630287.html

最新回复(0)