1.基础
1.1变量
-
变量声明格式
第一种,指定变量类型,如果没有初始化,则变量默认为零值。
var v_name v_type
v_name = value
第二种,根据值自行判定变量类型。
var v_name = value
第三种,使用 := 进行定义。
v_name := value//不需要进行var进行修饰
//就相当于
var v_name v_type
v_name = value
-
多变量声明
var v_namae1,v_name2,v_name3 type
v_namae1,v_name2,v_name3 = v1,v2,v3
//和 python 很像,不需要显示声明类型,自动推断
var v_namae1,v_name2,v_name3 = v1,v2v,v3
//使用 := 进行声明,不需要进行 var 声明
v_namae1,v_name2,v_name3 := v1,v2,v3
// 这种因式分解关键字的写法一般用于声明全局变量
var (
vname1 v_type1
vname2 v_type2
)
-
值类型和引用类型
所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值。
var e = 1
var d = e
fmt.Println(e, d)
fmt.Println(&e, &d)
//可以通过&进行查看地址
//输出的地址不相同
可以在给对象进行赋值的时候不进行指明类型,使用 := 由系统自动推断
b := 1
a := b
//也可以进行多变量进行赋值
a,b,c := 1,2,"asd"
如果想要进行交换两个变量可以用 a,b = b,a
空白标识符 _ 也被用于抛弃值,如值 5 在:_, b = 5, 7 中被抛弃。
1.2常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量。
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
-
常量的声明
const identifier [type] = value//[里面的可以省略,让编译器判断]
//例如
const c string = "asd"
const c1 = "asd"
//也可以进行多重赋值
const c1,c2,c3 = 1,"dadw",false
//还可以进行枚举
const(
one = 1
two = 2
three = 3
)
-
iota
iota,特殊常量,可以认为是一个可以被编译器修改的常量。
iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
//iota的用法有很多
const(
a = iota
b
c
)//结果是a = 0,b = 1,c = 2
const(
a = iota
b
c = 3.14
d
e = iota
f
)//结果是a = 0,b = 1,c = 3.14,d = 3.14,e = 4,f = 5
//对于iota不管赋值还是不赋值都会继续计数
const(
a = 1<<iota //1(二进制)左移iota
b
c
d
)//每个左移1<<iota位
//结果是a = 1,b = 2,c = 4,d = 8 -