版权声明:转载请注明出处 https://blog.csdn.net/weixin_43420337/article/details/86137055
赋值
// 全局变量
//单个变量
var x int //自动初始化为0
var y = false //不指定类型,自动赋值为bool
//多个变量
var x,y int
var i,s = 100,"hello"
// 组赋值
var (
x,y int
i,s = 100,"hello"
)
// 简短模式,
func main() {
// 只能用在函数内部
// 不能指定数据类型,只能根据赋值的类型创建数据类型
// 局部变量
x := 100
i,s := 100,"hello"
// 退化赋值,内存地址不变,只是内存地址对应的值发生改变,不过必须要有一个新变量被定义,这里变量x的内存地址不变,必须还是同一个作用域
x,z := 200,300
// x:=200 会提示报错。
// 不用作用域
{
x,z := 200,300 //不同作用域全部为新变量
}
}
空标识符 _
Go语言的变量定义了就要用,一般返回的err不想处理可以用空标识符。
func main() {
x,_ := strconv.Atoi("12") //忽略到error的返回值
println(x)
}
常量
常量就是不会变得量,比如π ,在go编译时候会预先编译,放进内存区域的常量区。
常量赋值的方式跟变量差不多,只不过少了简短模式
const π=3.14
const (
π=3.14
)
枚举
const (
a = iota // 0
// 这里不指定值和类型就会继承上一行的类型
b //1
c //2
)
// 自增的作用范围只是在自己的常量组,新定义一个常量组会继续从0开始
const (
_ = iota //0
KB = 1 << (10*iota) //
MB
GB
)
// iota 的自增是按行的不是类似与迭代器那样
const (
a = iota //0
b = 100
c = iota //2
d //3
)
// iota默认的是整型,可以自定义类型
type color byte // 自 定 义 类 型
const(
black color = iota // 指 定 常 量 类 型
red
blue
)
func test( c color) { println( c) }
func main() {
test(red)
test(100) // 100 并 未 超 出 color/ byte 类 型 取 值 范 围
x: = 2
test(x) // 错 误: cannot use x( type int) as type color in argument to test
}