Golang:变量和常量

作为静态类型语言,go语言总是有固定的数据类型,类型决定了变量内存的长度和存储格式。我们只能修改变量值,无法改变变量类型(通过类型转化或指针操作,我们可用不同方式修改变量值,但这并不意味着改变了变量类型)

一、变量声明

go语言中的变量需要声明以后才能使用,同一作用域内不支持重复声明,并且Go语言的变量声明后必须使用。

go语言的变量声明格式:

var 变量名 变量类型

可一次定义多个类型,包括用不同初始值定义不同类型

var x, y int
var a, s = 100, "abc" //不同类型初始化

依照惯例,建议以组的方式整理多行变量定义
var (
    x, y int
    a, s = 100, "abc"
)

短变量声明:
func main() {
    x := 100
    a, x := 1, "abc"
}

短变量声明注意事项:
》定义变量,同时显示初始化
》不能提供数据类型
》只能在函数内部使用(main函数)
》可以重复使用err变量

匿名变量:
在使用多重赋值时,如果希望忽略某个值,可以使用匿名变量,用下划线_表示
func foo() (int, string) {
    return 10, "Q1mi"
}
func main() {
    x, _ := foo()
    _, y := foo()
    fmt.Println("x=", x)
    fmt.Println("y=", y)
}
匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

"_"空标识符(匿名变量)可以用来临时规避编译器对未使用变量和导入包的错误检查,但请注意,它是预置成员,不能重新定义。

多变量赋值:

再进行多变量赋值操作时,首先计算出所有右值,然后再依次完成赋值操作

func main() {
    x, y := 1, 2
    x, y = y + 3, x + 2

    fmt.Println(x, y)
}

未使用错误:

编译器将未使用的局部变量当作错误。

二.常量

相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。常量的声明和变量的声明非常类似,只是把var换成了const,常量在定义的时候必须赋值。

常量值必须是编译期可确定的字符、字符串、数字或布尔值。可指定常量类型,或由编译器通过初始化值推断,不支持C/C++数字类型后缀。

const pi = 3.1415
const e = 2.7182

const (
    a = 1
    b = 2
)

常量值也可以是某些编译器能计算出结果的表达式,unsafe.Sizeof、len、cap等

const a = len(b)

在常量组中如不指定类型和初始化值,则与上一行非空常量右值相同
const (
        n1 = 100
        n2
        n3
)

你可能感兴趣的:(Golang编程,golang,开发语言,后端)