go语言中变量的定义和使用
生活随笔
收集整理的這篇文章主要介紹了
go语言中变量的定义和使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Go語言是靜態(tài)類型語言,因此變量(variable)是有明確類型的,編譯器也會檢查變量類型的正確性。在數(shù)學(xué)概念中,變量表示沒有固定值且可改變的數(shù)。但從計算機(jī)系統(tǒng)實(shí)現(xiàn)角度來看,變量是一段或多段用來存儲數(shù)據(jù)的內(nèi)存。
聲明變量的一般形式是使用 var 關(guān)鍵字:
var name type其中,var 是聲明變量的關(guān)鍵字,name 是變量名,type 是變量的類型。
需要注意的是,Go語言和許多編程語言不同,它在聲明變量時將變量的類型放在變量的名稱之后。這樣做的好處就是可以避免像C語言中那樣含糊不清的聲明形式,例如:int* a, b; 。其中只有 a 是指針而 b 不是。如果你想要這兩個變量都是指針,則需要將它們分開書寫。而在 Go 中,則可以和輕松地將它們都聲明為指針類型:
聲明變量有幾種形式:
正常格式:
批量格式
var (a intb stringc []float32d float64... )簡短格式:
名字 := 表達(dá)式 package mainimport "fmt"func main() {//變量測試//小塊內(nèi)存 可以改變,不可以改變的是常量// var 變量名 類型var num1 intnum1 = 30fmt.Printf("num1 = %d\n", num1)var num2 int = 15fmt.Printf("num2 = %d\n", num2)// 雖然go語言是靜態(tài)余語言但是支持類型的自動判斷var num3 = 30fmt.Printf("num3 = %d\n", num3)fmt.Print("var test")// 使用類型腿短 := ,這種方式只能用于函數(shù)體內(nèi),不能用于全局變量的盛行聲明num4 := 45fmt.Printf("type = [%T]num4 = [%d]\n", num4, num4)// 變量集合聲明var (studentName = "xiaoming"teacherName = "jianguo"studentAge = 18teacherAge = 28)fmt.Printf("student name = [%s] age = [%d], Teacher name = [%s] age = [%d]\n",studentName, studentAge, teacherName, teacherAge)} package mainimport "fmt"func main() {var num intnum = 100fmt.Printf("num = %d &"+" = %p\n", num, &num)// 常量的定義// 常量盡量都使用大寫的定義,定義之后不允許修改const PI = 3.14const PATH string = "http:www.baidu.com"fmt.Println(PATH)// 定義一組常量// 變量的集合const C1, C2, C3 = 100, 3, "haha"const (NAME = "xiaoming"LINKMODE = 1)// 一組常量,如果某個常量沒有給初始值,就會默認(rèn)和上一個常量保持一致的值const (a int = 100bc string = "ruby"de)fmt.Printf("type = %T, b = [%d]\n", a, a)fmt.Printf("type = %T, b = %d\n", b, b)fmt.Printf("type = %T, b = %s\n", d, d)fmt.Printf("type = %T, b = %s\n", e, e) }特殊的常量 iota
package mainimport "fmt"func main() {// iota 特殊常量,可以被編譯器自動修改的常量,每當(dāng)定義一個const, iota會自動清零// 在同一個變量集合中,iota隨著變量的定義一直遞增,直到遇到下一個const在清零const (a = iotab = iotac = iota)fmt.Println(a)fmt.Println(b)fmt.Println(c)const (e = iotaf // 默認(rèn)和上一行一致g = iota)fmt.Println(e)fmt.Println(f)fmt.Println(g)// 枚舉實(shí)現(xiàn)const (MALE = iotaFEMALEUNKNOWM)fmt.Println(MALE, FEMALE, UNKNOWM)} package mainimport "fmt"func f1(f func()) {fmt.Println("this is f1")f() }func f2(x, y int) {fmt.Println("this is f2")fmt.Print(x + y) }func f3(f func(int, int), x, y int) func() {tmp := func() {fmt.Println("hello")f(x, y)}return tmp }func main() {//基本的數(shù)據(jù)類型// 1.布爾類型// 2.數(shù)值類型// 3.字符串// 4.復(fù)合數(shù)據(jù)類型// array slice mao function pointer struct interface channel...// boolvar a bool = truefmt.Printf("%t\n", a)// byte == uint8// rune == int32var b rune = 100fmt.Println(b)// 匿名函數(shù),立即執(zhí)行函數(shù)func(x, y int) {fmt.Println(x + y)}(1, 2)// 閉包f1(f3(f2, 2, 3))}總結(jié)
以上是生活随笔為你收集整理的go语言中变量的定义和使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go语言数组的使用
- 下一篇: 作者:聂敏,男,电子科技大学教育大数据研