Go变量和常量

Scroll Down

Go变量和常量

声明变量的一般形式是使用var关键字

var name type

其中,var 是声明变量的关键字,name 是变量名,type 是变量的类型。

Go语言的基本类型有:

  • bool
  • string
  • int、int8、int16、int32、int64
  • uint、uint8、uint16、uint32、uint64、uintptr
  • byte // uint8 的别名
  • rune // int32 的别名 代表一个 Unicode 码
  • float32、float64
  • complex64、complex128

当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等。所有的内存在 Go 中都是经过初始化的。
变量的命名规则遵循骆驼命名法,即首个单词小写,每个新单词的首字母大写,例如:numShips 和 startDate 。

变量声明

标准格式

标准声明方式通过var来声明,下来接变量名,最后声明变量类型不需要使用分号结尾

var 变量名 变量类型

例如:定义一个变量j并且初始化值是1.

var j int = 1
//或者分开声明和赋值
var j int
j = 1

批量格式

除了可以使用var单个定义变量声明之后,也可以批量或者创建多个变量

var var1, var2 vartype

创建变量var1和var2,变量类型为varType
例如:定义一个变量i,j并且初始化值是0,1.

var i,j int = 0,1
//或者分开声明和赋值
var i,j int
i,j = 0,1
//也可以通过var来声明多个不同类型的变量
//分别声明变量e,f值是123和“hello”
var e, f = 123, "hello"

或者
使用var和括号,可以将一组变量放在一起定义一般用于声明全局变量

var (
    a int
    b string
    c []float32
    d func() bool
    e struct {
        x int
    }
)

简短格式

除了使用var关键字创建变量,还可以使用更加快捷的方式创建变量

varname := varvalue

使用简短格式定义变量有一些前置条件:
1.:=是一个变量声明语句,因此在使用:=声明变量的时候,左侧必须要有没有声明的新变量,否则会出现编译错误
2.只能在函数内部使用
例如:定义一个变量j并且初始化值是1.

j := 1 //声明语句正常
var intVal int
intVal := 1 //编译错误
intVal, intVal1 := 1,2 //编译通过,因为左侧有新变量
g,h := 123,"hello" //分别声明变量g,h值是123和“hello”

匿名变量

go语言提供了一个特殊的符号来声明一个匿名数据类型也就是下划线"",""被称为空白标识符。它可以像其他标识符那样用于变量的声明,任何类型都可以复制给"_",但是任何复制给该标识符的值都会被抛弃,不可以在后续代码中使用,也不可以使用这个标识符对其他变量进行赋值或者运算。
例如

func ReturnValue() (int, int) {
    return 100, 123
}
func main(){
    x, _ := ReturnValue()
    _, y := ReturnValue()
    fmt.Println(x, y)
}

代码运行结果

100 123

代码说明:
ReturnValue() 是一个函数,返回值是两个整型。每次调用将会返回100和123两个数值。

main()
第一行:只需要获取第一个返回值,所以将第二个返回值的变量设为下画线(匿名变量)。
第二行:将第一个返回值的变量设为匿名变量。

匿名变量优点:

  • 匿名变量不占用内存空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用。
  • 在实际编码中,有时候我们不希望使用有些函数的中间计算的结果,可以使用匿名变量来丢弃该变量节省内存空间

常量

参考链接
https://www.runoob.com/go/go-constants.html