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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/d4snap/article/details/80954788

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,更灵活

参考学习

猜你喜欢

转载自blog.csdn.net/d4snap/article/details/80954788