单个变量的生命和赋值

变量声明格式
var <名称> [类型]
<名称>=<值,表达式,函数等>
var <名称> [类型] =<值,表达式,函数等>
分组声明

var (
i int
f float32
b bool
)

同一行声明和赋值多个变量
var a,b,c int=1,2,3 或 a,b,c:=1,2,3
:=这种写法只能用于定义局部变量,定义全局变量还是要老老实实使用变量的定义

特殊变量“_” 对于变量的赋值,可以理解为就是一个垃圾桶,并不需要的赋值,类似于python中的用法

变量类型转换必须是显示转换且只能发生在可兼容的变量之间
<变量名称> [:]=目标类型(需要转换的变量)

变量的可见性规则
变量是大写字母开头的,则可导出,是共用变量
变量是小写字母开头的,则不可导出,是这个包的私有变量

常量生命格式
const [类型]=value 显式声明
const = value 隐式声明

常量可以使用内置表达式定义 例如:len() Sizeof()
常量范围目前只支持布尔类型,数字类型,字符串类型

特殊变量iota的用法
在const关键字出现时会被重置为0
const中每新增一行常量声明iota值+1
iota变量用法实例

package main

import "fmt"

const a =iota
const b=iota
const (
c=iota
d=iota
_
e=iota
)

func main() {
fmt.Print(a)
fmt.Print(b)
fmt.Print(c)
fmt.Print(d)
fmt.Print(e)
}


//输出:00013
//其中_也占一行,所以iota自增1

隐式使用法

package main

import "fmt"

const a =iota
const b=iota
const (
c=iota
d=iota
_
e=iota*2
f
g
)

func main() {
fmt.Print(a)
fmt.Print(b)
fmt.Print(c)
fmt.Print(d)
fmt.Print(e)
fmt.Print(f)
fmt.Print(g)
}
//输出为:00016810 没有赋值的变量会自动继承上一行非空的表达式