Skip to content

Go 语言笔记:变量

变量

变量是某个存储单元的名称,存储单元存储特定类型的值

变量的声明

通常我们使用 var name type 来声明单个变量

go
var age int
var name string

声明变量并初始化

变量可以在声明的时候进行初始化操作,使用格式 var name type = initValue

go
var age int = 18

类型推断

变量声明也可以直接省略掉 type 关键字,直接初始化,这因为 Go 语言具有类型推断的能力,因此我们使用 var name = initValue 来声明变量。

go
var age = 18

声明多个变量

在项目中,经常会声明多个变量,那么如何声明呢,如果是同一种类型的变量,我们可以使用如下几种格式

go
// 同一种类型单行声明多个变量
var name1, name2 int = initValue1, initValue2

// 不同类型多行声明多个变量,此类写法多用于声明包级别的变量
var (
  name1 = initValue1
  name2 = initValue2
)

简短声明

除了以上声明方式外,Go 语言还支持一种简短声明,使用 := 操作符,简短声明要求所有变量都初始化,此类写法主要用于函数体内声明局部变量

go
nage, name := 18, "lemon"

并且,变量中至少有一个尚未声明过,如果两个变量都已经初始化过了,会抛出异常

go
age, name := 18, "lemon"
age, name := 20, "Teacher" // no new variables ont left sid of :=

强类型

Go 语言是强类型语言,变量的类型不能更改

go
age := 18
age = "lemon" // 编译错误 Cannot use '"lemon"' (type string) as type int

未使用的变量

Go 语言不允许声明了变量而不使用它

go
package main

import (
	"io"
	"net/http"
)

func main() {
  age := 18  // 显示编译错误 Unused variable 'age' 
  http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "Hi, Lemon.")
	})
  http.ListenAndServe(":8080", nil)
}

运行时显示错误

go
age declared but not used

init 函数中声明变量

init 函数是非常特殊的函数,不能被人为调用,它是在每个包初始化时自动执行,优先级高于 main 函数,主要用于启动时执行初始化任务或者数据修复等场景。

go
package main

func main() {
  println("lemon")
}

func init() {
  age := 15
  println(age)
}

Released under the MIT License.