Golang学习笔记(二):类型、变量、常量

2019-11-10 10:29:40于丽

    //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