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)
}