­

[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())      }    }