[Go] gocron源碼閱讀-go語言中的切片和類型綜合
- 2019 年 11 月 15 日
- 筆記
在gocron.go文件的main函數中,有下面這一句,從這句代碼中可以學習到切片和類型的綜合運用
cliApp.Flags = append(cliApp.Flags, []cli.Flag{}...)
首先在go語言中定義一個類型需要使用type 名字 struct{},還可以給這個類型定義成員方法
type Taoshihan struct { } func (t Taoshihan) Say() string { return "my name is taoshihan" }
這裡我就定義了Taoshihan類型,為他增加了Say方法
實例化這個類型需要 名字{},下面這個就是實例化了一個Taoshihan對象
mytao := Taoshihan{}
切片可以看成是一個可變長度的數組,聲明定義一個切片可以向下面這樣 var 名字 []存儲的類型
var myslice []Taoshihan
我這個切片中存的是Taoshihan這個類型
往切片中添加數據需要使用append函數,下面我往切片中增加了兩個數據
myslice=append(myslice,mytao,Taoshihan{})
而原代碼中的三個點…,代表的是打散切片,切片中的每個元素都添加進去,在我的例子中可以這樣表示
myslice=append(myslice,[]Taoshihan{}...)
[]Taoshihan{}其實就代表了另一個切片,是個空的
循環遍歷切片需要使用for range循環,其中的每個t就代表了是每個加進去的對象
for _, t := range myslice { fmt.Println(t.Say()) }
完整案例:
package main import ( "fmt" ) type Taoshihan struct { } func (t Taoshihan) Say() string { return "taoshihan" } func main() { var myslice []Taoshihan mytao := Taoshihan{} myslice = append(myslice, Taoshihan{}, mytao) //這裡遍歷輸出兩次 for _, t := range myslice { fmt.Println(t.Say()) } }