GO语言基础语法 | 青训营笔记

88 阅读3分钟

定义变量

变量类型

常见的类型主要包括:

  • bool :布尔类型,只有true or false两个值
  • int :整型
  • float32/float64 :浮点型
  • string :字符串类型
变量声明

Go语言使用var关键字声明变量(还有短声明,下面代码展示),同时Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。并且Go语言的变量声明后必须使用

变量的初始化

Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串""。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil

var 变量名 类型 = 表达式
​
var a = "字节" // 类型推导,不指定类型会自动判断var b, c int = 1, 2 // 一次初始化多个变量var d = truevar e float64 // 普通声明未赋值
​
f := float32(e) // 短声明(只可在函数体内使用)
​
g := a + "golang"
fmt.Println(a, b, c, d, e, f) // CSA 1 2 true 0 0
fmt.Println(g)                // CSAgolang

在函数体外时只能使用var声明变量

变量作用域

作用域指的是已声明的标识符所表示的常量、类型、函数或者包在源代码中的作用范围,在此我们主要看一下go中变量的作用域,根据变量定义位置的不同,可以分为一下三个类型:

  • 函数内定义的变量为局部变量,这种局部变量的作用域只在函数体内,函数的参数和返回值变量都属于局部变量。这种变量在存在于函数被调用时,销毁于函数调用结束后。
  • 函数外定义的变量为全局变量,全局变量只需要在一个源文件中定义,就可以在所有源文件中使用,甚至可以使用import引入外部包来使用。全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写(下面代码展示)。
  • 函数定义中的变量成为形式参数,定义函数时函数名后面括号中的变量叫做形式参数(简称形参)。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁,在函数未被调用时,函数的形参并不占用实际的存储单元,也没有实际值。形式参数会作为函数的局部变量来使用
匿名变量

匿名变量的特点是一个下画线_,这本身就是一个特殊的标识符,被称为空白标识符。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。

使用匿名变量时,只需要在变量声明的地方使用下画线替换即可。

package main
​
func GetNum() (int, int) {
    return 1, 2
}
​
func main() {
    a, _ := GetNum()
    _, b := GetNum()
    fmt.Println(a,b)
}