一篇文章帶你瞭解 Go 語言基礎之變量
前言
Hey,大家好呀,我是星期八,這次咱們繼續學習 Go 基礎之變量叭。
爲什麼需要變量
簡單點說,我們寫的程序默認數據都是保存在內存條中的,我們不可能直接通過地址找到這個變量,因爲地址太長了,而且不容易記。
通常我們是通過變量名找到對應的地址上面的值,再進行一系列操作。
變量類型
現在不管是什麼語言,常用的變量分爲以下類型。
-
整數,
1,6,2,8,4...
-
浮點數,
1.1,5.7767,23.99...
-
布爾型,
真,假
-
字符串類型,
"張三","李四"...
-
List
-
Map
大概會分爲以上幾種類型,不過這個不用記,瞭解就好。
變量定義
聲明變量
格式如下。
var 變量名 變量類型
例如:
var age int
var gender bool
批量聲明
上面聲明變量是一個一個聲明的,如果需要一次性聲明一些變量,可以這樣寫。
var (
age int
gender bool
name string
id int
height int
...
)
聲明時賦值
上述方式,只是聲明瞭變量,但是並沒有賦值,在後期需要時可以在賦值。
如果在聲明時,就確定值是什麼,可以直接賦值。
格式如下。
var 變量名 類型 = 值
例如:
var age int = 18
var name string = "張三"
在 Go 中的一個強制要求
在 Go 中,變量必須使用,至少需要fmt.Println(變量)
。
類型推導方式聲明變量賦值
在上述聲明變量並且賦值時,還需要指定變量類型。
在 Go,Go 具有類型推導方式聲明時賦值變量。
var age = 18
var name = "張三"
其實就是變量名後面不用寫變量類型了。
:= 方式變量賦值
在 Go,還有一種更簡單的方式聲明變量賦值。
格式如下。
age := 18
name := "張三"
學過 Python 的可能有點開心了,除了多個一個:
號,其他基本和 Pyton 定義變量方式一樣。
注意:
age := 18 //本質是執行的兩句話
//同上
var age int
age = 18
全局變量
簡單說就是,在最外面的定義的變量就是全局變量。
在 Go 中,全局變量是有要求的。
package main
//全局變量:
// 方式一,聲明全局變量,必須跟類型
//var age int
//方式二,聲明變量且賦值,類型可以不用寫
//var age = 18
//var age int = 18
//方式三,錯誤示例,全局變量要麼只聲明變量,要麼聲明就賦值
//var age int
//age =18
//方式四,錯誤示例,:=方式聲明賦值
// 方式四其實就等於方式三的寫法,所以不能用在全局變量中
//age := 18
func main() {
}
PS: 全局變量要麼只聲明,要麼聲明時就賦值,不能寫兩行賦值,所以:= 方式不能應用在全局變量中
匿名變量
匿名變量多用於函數返回值場景中,比如函數返回了倆值,倆值要第一個值,就可以使用匿名變量。
因爲 Go 中,變量必須使用,如果某個變量需要忽略,使用_
即可。
值得注意的是,匿名變量不會佔用內存。
package main
func get_info() (string, int) {
return "張三", 18
}
func main() {
//標準寫法
//name, age := get_info()
//fmt.Println(name, age)
//匿名變量方式
//name, _ := get_info()
//fmt.Println(name)
//_,age := get_info()
//fmt.Println(age)
}
常量
其實常量和變量基本一樣,但是常量是不能修改的。
通常常量以大寫定義。
package main
import "fmt"
func main() {
//單個聲明
const PI1 int = 3
const PI2 = 3.14
//同時聲明多個
const (
PI3 = 3.14
PI4 = 3.14
)
//同上聲明多個變量時,如果省略了值表示和上一行相同
const (
girl1 = 18
girl2 // 18,和上一行相同
girl3 // 18,和上一行相同
girl4 = 17
girl5 // 17,和上一行相同
)
fmt.Println(girl3, girl5)
}
注: 常量聲明時就必須賦值
錯誤示例。
package main
func main() {
const age int
age = 18
//error
}
總結
上述我們學習了 Go 基礎之變量。
如果在操作過程中有任務問題,記得下面留言,我們看到會第一時間解決問題。
我是碼農星期八,如果覺得還不錯,記得動手點贊一下哈。感謝你的觀看。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/HIcwEHwHimhpNy_VQ9NtYA