//get i = 1, l[0] = 2
sc[0], sc[0] = 1, 2
//get sc[0] = 2
B.垃圾桶_
func test()(int, string) {
return 123, "abc"
}
a, _ := test()
C.已声明但是没有使用的变量会在编译阶段报错,较Python 更为严格
常量
常量可以是字符,字符串,布尔或数字
常量赋值是编译期的行为
1.常量声明
在编译阶段就能确定下来的值,在运行时无法改变该值
常量可以定义为数值、布尔值或字符串等类型
const constantName = value
const Pi float32 = 3.1415926
const c_name [type] = value
const c_name1, c_name2 = value1, value2
const (
c_name1 = vluae1
c_name2 = value2
)
=右侧,必须为常量或常量表达式,如果使用到了函数,必须为内置函数(编译期行为)
const i = 10000
说明:
A.常量必须是编译期能确定的Number(char/integer/float/complex)、String和bool
B.在定义常量数组时,如果不提供初始化值,则表示与上行常量类型,值,完全相同
const (
a = "abc"
b
)
//则 b = "abc"
C.常量可以用len(), cap(), unsafe.Sizeof()常量计算表达式的值. 常量表达式中,函数必须是内置函数,否则编译不过
package main
import "unsafe"
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)
)
func main(){
println(a, b, c)
}
结果: abc 3 16
枚举
iota,特殊常量,可以认为是一个可以被编译器修改的常量
在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1
不提供初始值,则表示使用上一行的表达式
1.声明:
iota生成从0开始的自动增长枚举值,意味着,多一个枚举值,iota+=1,无论是否使用
基本语法
const (
a = 1
b = 2
)
const (
a = iota //0
b //1
c //2
)
const (
_ = iota










