Go 變數、常量、命名規則、程式碼風格
1、變數的來歷
程式執行過程中的資料都是儲存在記憶體中,我們想要在程式碼中操作某個資料時就需要去記憶體上找到這個變數,但是如果我們直接在程式碼中透過記憶體地址去操作變數的話,程式碼的可讀性會非常差而且還容易出錯,所以我們就利用變數將這個資料的記憶體地址儲存起來,以後直接透過這個變數就能找到記憶體上對應的資料了。
2、變數型別
變數(Variable)的功能是儲存資料。不同的變數儲存的資料型別可能會不一樣。經過半個多世紀的發展,程式語言已經基本形成了一套固定的型別,常見變數的資料型別有:整型、浮點型、布林型等。
Go 語言中的每一個變數都有自己的型別,並且變數必須經過宣告才能開始使用。
3、GO 語言中變數的宣告
Go 語言變數名由字母、數字、下劃線組成,其中首個字元不能為數字。Go 語言中關鍵字和保留字都不能用作變數名。
Go 語言中的變數需要宣告後才能使用,同一作用域內不支援重複宣告。 並且 Go 語言的變數宣告後必須使用。
3.1、var 宣告變數
var 變數名稱 type
var name string
var age int
var isOk bool
package main
import "fmt";
func main() {
var username="張三" var age int =20
fmt.Println(username,age)
}
3.2、一次定義多個變數
var identifier1, identifier2 type
package main
import "fmt"
func main() {
var username, sex string
username = "張三"
sex = "男"
fmt.Println(username, sex)
}
申明變數的時候賦值
var a, b, c, d = 1, 2, 3, false
3.3、批次宣告變數的時候指定型別
var (
a string
b int
c bool
)
a = "張三"
b = 10
c = true
fmt.Println(a,b,c)
批次宣告變數並賦值
var (
a string = "張三"
b int = 20
c bool = true
)
fmt.Println(a, b, c)
fmt.Println(a,b,c)
3.4、變數的初始化
Go 語言在宣告變數的時候,會自動對變數對應的記憶體區域進行初始化操作。每個變數會被初始化成其型別的預設值,例如: 整型和浮點型變數的預設值為 0。 字串變數的預設值為空字串。 布林型變數預設為 false。 切片、函式、指標變數的預設為 nil。
當然我們也可在宣告變數的時候為其指定初始值。變數初始化的標準格式如下:
var 變數名 型別 = 表示式
舉個例子:
var name string = "zhangsan"
var age int = 18
或者一次初始化多個變數並賦值
var name, age = "zhangsan", 20
3.5、型別推導
有時候我們會將變數的型別省略,這個時候編譯器會根據等號右邊的值來推導變數的型別完成初始化。
var name = "Q1mi"
var age = 18
3.6、短變數宣告法
在函式內部,可以使用更簡略的 := 方式宣告並初始化變數。
注意:短變數只能用於宣告區域性變數,不能用於全域性變數的宣告
變數名 := 表示式
package main
import (
"fmt"
)
// 全域性變數 m
var m = 100
func main() {
n := 10
m := 200 // 此處宣告區域性變數 m
fmt.Println(m, n)
}
使用變數一次宣告多個變數,並初始化變數
m1, m2, m3 := 10, 20, 30
fmt.Println(m1, m2, m3)
3.7、匿名變數
在使用多重賦值時,如果想要忽略某個值,可以使用匿名變數(anonymous variable)。 匿名變數用一個下劃線 _ 表示,例如:
func getInfo() (int, string) {
return 10, "張三"
}
func main() {
_, username := getInfo()
fmt.Println(username)
}
匿名變數不佔用名稱空間,不會分配記憶體,所以匿名變數之間不存在重複宣告。
注意事項:
- 函式外的每個語句都必須以關鍵字開始(var、const、func 等)
- :=不能使用在函式外。
- _ 多用於佔位,表示忽略值。
4、Go 語言中的常量
相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。 常量的宣告和變數宣告非常類似,只是把 var 換成了 const,常量在定義的時候必須賦值。
4.1、使用 const 定義常量
const pi = 3.1415
const e = 2.7182
宣告瞭 pi 和 e 這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。
多個常量也可以一起宣告:
const (
pi = 3.1415
e = 2.7182
)
const 同時宣告多個常量時,如果省略了值則表示和上面一行的值相同。 例如:
const (
n1 = 100
n2
n3
)
上面示例中,常量 n1、n2、n3 的值都是 100。
列印 Pi 的值
package main
import (
"fmt"
"math"
)
func main() {
const pi=math.Pi
fmt.Println(pi);
}
4.2、const 常量結合 iota 的使用(瞭解)
iota 是 golang 語言的常量計數器,只能在常量的表示式中使用。
iota 在 const 關鍵字出現時將被重置為 0(const 內部的第一行之前),const 中每新增一行常量宣告將使 iota 計數一次(iota 可理解為 const 語句塊中的行索引)。
- iota 只能在常量的表示式中使用。
fmt.Println(iota)
編譯錯誤: undefined: iota
- 每次 const 出現時,都會讓 iota 初始化為 0.【自增長】
const a = iota // a=0
const (
b = iota //b=0
c //c=1
)
- const iota 使用 _ 跳過某些值
const (
n1 = iota //0
n2 //1
_n4 //3
)
- iota 宣告中間插隊
const (
n1 = iota //0
n2 = 100 //100
n3 = iota //2
n4 //3
)
const n5 = iota //0
- 多個 iota 定義在一行
const (
a, b = iota + 1, iota + 2 //1,2
c, d //2,3
e, f //3,4
)
5、Go 語言變數、常量命名規則
- 變數名稱必須由數字、字母、下劃線組成。
- 識別符號開頭不能是數字
- 識別符號不能是保留字和關鍵字。
- 變數的名字是區分大小寫的如: age 和 Age 是不同的變數。在實際的運用中,也建議,不要用一個單詞大小寫區分兩個變數。
- 識別符號(變數名稱)一定要見名思意 :變數名稱建議用名詞,方法名稱建議用動詞
- 變數命名一般採用駝峰式,當遇到特有名詞(縮寫或簡稱,如 DNS)的時候,特有名詞根據是否私有全部大寫或小寫。
6、Go 語言程式碼風格
- 程式碼每一行結束後不用寫分號( ;)
- 運算子左右建議各加一個空格
var username string = "itying"
- Go 語言程式設計師推薦使用駝峰式命名
當名字有幾個單片語成的時優先使用大小寫分隔
-
強制的程式碼風格
左括號必須緊接著語句不換行,這個特性剛開始會使開發者不習慣,但隨著對 Go 語言的不斷熟悉,就會發現風格統一讓大家在閱讀程式碼時把注意力集中到了解決問題上,而不是程式碼風格上 -
go fmt 主要用於格式化文件,讓所有人的程式碼風格保持一致
D:\golang\src\demo01>go fmt main.go
main.go