第一部分
常量:
常量的數(shù)值可以作為各種類型使用
func consts() {
const (
filename = "abc.txt"
a, b = 3, 4
)
var c int
c = int(math.Sqrt(a*a + b*b))
fmt.Println(filename, c)
}
枚舉類型舉例
tips: 1 :沒有表達式的常量定義 復用上一行的表達式
2 :從第一行開始 iota從0逐行+1
3: 不同的const定義塊互相不干擾
4 :iota只能在常量組中使用
func enums(){
//普通枚舉類型
const(
cpp = iota
_
java
golang
)
//自增值枚舉類型b kb mb gb tb pb
const(
b = 1 << (10 * iota)
kb
mb
gb
tb
pb
)
fmt.Println(cpp, java, golang)
fmt.Println(b, kb, mb, gb, tb, pb)
}
const(
a = iota // iota只能在常量組中使用
b = 10
c // 沒有表達式的常量定義 復用上一行的表達式
d, e = iota, iota
f = iota // 從第一行開始 iota從0逐行+1
)
iota代表的是這里的行數(shù)
打印下來:
0 10 10 3 3 4
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
}
IF判斷方式
if的條件是可以賦值的
if的條件里賦值的變量作用域就在這個if語句里
舉例:
func main() {
const filename = "abc.txt"
if contents, err := ioutil.ReadFile(filename); err != nil{
fmt.Println(err)
} else {
//print文件使用
fmt.Printf("%s\n", contents)
}
//之前的寫法
/*
contents, err := ioutil.ReadFile(filename);
if err != nil{
fmt.Println(err)
} else {
//print文件使用
fmt.Printf("%s\n", contents)
}*/
}
數(shù)組:
[10]int 和[20]int 時不同的類型
調用func f(arr [10]int) 會拷貝數(shù)組
定義數(shù)組的方式:
var arr1 [5]int
arr2 := [3]int{1, 3, 5}
arr3 := [...]int{2, 4, 6, 8, 10}
//多維數(shù)組 四行五列
var grid [4][5]int
遍歷數(shù)組的方式:
//普通處理數(shù)組
for i := 0; i < len(arr3); i++ {
fmt.Println(arr3[i])
}
//range關鍵字獲取數(shù)組的下標和值
for _, v := range arr3 {
fmt.Println(v)
}
class命名 大寫為public 小寫為private
一個目錄只能有一個package包
main()方法 必須配合package main
函數(shù)的兩種寫法:
語法一
func session(s RetrieverPoster) string{
s.Post(url, map[string]string{
"contents": "another faked imooc.com",
})
return s.Get(url)
}
調用方式就是session(***)
語法二
func (s RetrieverPoster) session string{
s.Post(url, map[string]string{
"contents": "another faked imooc.com",
})
return s.Get(url)
}
調用方式就是 ***.session()
go mod依賴管理
由GO命令統(tǒng)一管理 用戶不必關心目錄結構
初始化:go mod init
增加依賴: go get
更新依賴: go get [@v版本號] 拿到新老版本之后mod會多一些東西 通過go mod tidy把多余依賴去除
項目遷移到go mod: go mod init , go build ./...