源碼中有這麼一句,這個函數要求返回的是[]cli.Command,cli.Command類型的切片,這個地方直接使用字面值初始化了一個切片返回去了數組
return []cli.Command{command}
數組的字面值初始化,通常是須要指定數組的大小,可使用...三個點來代替大小,根據後面初始化的個數來計算,下面就是字面值初始化一個數組函數
arr := [...]int{1, 2, 3} for i, j := range arr { fmt.Println(i, j) }
切片和數組很相似,而且切片的底層也是引用了一個數組,切片的字面值初始化直接不須要三個點就能夠,下面的切片存的是自定義的User類型spa
type User struct { Name string } user := User{Name: "taoshihan"} mySlice := []User{user} for i, user := range mySlice { fmt.Println(i, user.Name) }
完整代碼:code
package main import "fmt" type Command struct { Name string } func main() { //初始化一個數組 arr := [...]int{1, 2, 3} for i, j := range arr { fmt.Println(i, j) } //初始化一個切片,這個和源碼中的就差很少了 command := Command{Name: "taoshihan"} commands := []Command{command} for i, command := range commands { fmt.Println(i, command.Name) } }