這次我們學習一下golang語言
gitee: go-study
定義
定義的變量或者函數必須用到(pakeage內的全局除外)
var a int // 默認為0
var b string //默認為""
fmt.Printf("%d %q\n",a, s)
復制代碼
直接定義可以不寫類型(int..)go會自行判斷
var a, b = 3, 4
var s = "abc"var a, b, c, s = 3, 4, true, "def"
復制代碼
不寫var(函數內可用:=,函數外不可以用),
a, b, c, s := 3, 4, true, "def"
b = 5 //第二次不用:=
復制代碼
簡寫var
var aa = 3
var ss = "kkk"
var bb = truevar (aa = 3ss = "kkk"bb = true
)
復制代碼
內建變量類型
- bool, string
- (u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptr
- byte, rune
- float332, float64, complex64, complex128
強制類型轉換
var a, b int = 3, 4
var c int
c = math.Sqrt(float64(a*a + b*b))) //報錯
c = int(math.Sqrt(float64(a*a + b*b))) //正確
復制代碼
常量和枚舉
- 常量(不要大寫) const數值可以作為各種類型使用
const filename = "abc.txt"
const a, b = 3, 4 //不定義int類型則為文本
var c int
c = int(math.Sqrt(a*a + b*b))
復制代碼
- 枚舉
const (cpp = 0java = 1pytion = 2golang = 3
)
fmt.Println(cpp, java, pytion, golang) //0,1,2,3
復制代碼
- iota
const (cpp = iotajavapytiongolang
)
fmt.Println(cpp, java, pytion, golang)//0,1,2,3const (cpp = iota_ //跳過javapytiongolang
)const (b = 1 << (10 * iota)kbmbgbtbpb
)
fmt.Println(b, kb, mb, gb, tb, pb) //1 1024 1048576 1073741824 1099511627776 1125899906842624
復制代碼
條件語句
- if
const filename = "abc.txt"
contents, err := ioutil.ReadFile(filename)
if err != nil {fmt.Println(err)
} else {fmt.Printf("%s\n", contents)
}
// 第二種寫法(類似for) contents外部訪問不到
const filename = "abc.txt"
if contents, err := ioutil.ReadFile(filename); err != nil {fmt.Println(err)
} else {fmt.Printf("%s\n", contents)
}
fmt.Printf("%s\n", contents) //報錯
復制代碼
- switch
func grade(score int) string {g := ""switch {case score < 0 || score > 100:panic(fmt.Sprintf("Wrong score: %d", score))case score < 60:g = "f"case score < 80:g = "c"case score < 90:g = "b"case score <= 100:g = "a"}return g
}
fmt.Println(grade(0),grade(59),grade(69),
)// f f c
fmt.Println(grade(0),grade(59),grade(69),grade(101),
)// 報錯,其他數值算不出來
復制代碼
后續會繼續更新