Go 变量(var) & 常量(const)

时间:2019-12-18
本文章向大家介绍Go 变量(var) & 常量(const),主要包括Go 变量(var) & 常量(const)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

变量

声明变量格式:

var var_name var_type

变量在声明时会自动初始化:

int: 0
string: ""
bool: false

多变量赋值

多个变量可以在一起赋值

var a, b, c int
d, e, f := 1, 2, "I'm F"
var(
    a = 1
    b int
)

局部变量

局部变量声明就必须使用,否则编译时会报错

// 可以先声明,再初始化
var a int
a = 1

// 可以在声明的同时进行初始化
var a int = 1
// Go 可以在初始化的时候自动判断变量类型,所以 int 可以省略
var a = 1

// var a = 1 的简略写法,同样会自动判断
a := 1

全局变量

全局变量声明后可以不使用,编译时不会报错
全局变量首字母必须大写,否则从其他包中就无法访问到
由于所有语句必须在函数中,所以无法通过 := 声明全局变量,全局变量只能通过 var 进行声明

var A int = 1

或者可以通过初始化函数对其进行初始化

var A int

func init() {
    A = 3
}

只写变量 _

由于 Go 中不允许出现局部变量声明后不使用的情况,但是有时会出现需要接收一个值,但是之后又不会用到
如果直接声明一个变量去接收,由于之后没有用到,所以编译无法通过,这时就可以使用只写变量 _ 来接收之后用不到的值

变量作用域

函数内声明的变量是局部变量,只在函数内有效
函数外部声明的是全局变量,如果首字母小写,只能在当前包中访问;如果首字母大写,可以在其他包中访问到

常量

常量在编译时就会确定,之后无法修改
常量声明和变量相似,但是声明时必须要有值
格式:

const const_name const_type = value

变量的类型可以省略

多行声明:

const(
    blog = "cnblogs.com/dbf-/"
    Pi = 3.14159
)

计算表达式

常量可以使用计算表达式,但是只能用内置的常量计算表达式

const(
    a = "123"
    length = len(a)
)

自动填充

在给第一个常量赋值之后,如果之后的没有赋值,就会自动赋为上面的值

iota

声明常量时可以通过 iota 实现自增
示例:

package main

import "fmt"

const(
    a = iota
    b = "string"
    c
    d = iota
    e
)
const(
    f = iota
    g
    h
)

func main() {
    fmt.Println(a, b, c, d, e)
    fmt.Println(f, g, h)
}

输出结果:

0 string string 3 4
0 1 2

在一个 const 中使用 iota 后,就会自动从第一个开始计数,为之后每一个常量分配一个值,虽然中间被其他的赋值打断,但是计数器仍然在工作
在一个新的 const 中,计数器会重新计数

值类型

基本数据类型:int、float、bool、string、struct 等都是值类型
值类型中储存的就是值
内存通常在栈中分配

引用类型

指针、切片、map、chan 等都是引用类型
引用类型中储存的是内存地址,内存地址指向的才是值
内存通常在堆中分配

原文地址:https://www.cnblogs.com/dbf-/p/12059706.html