无法传播数组以作为多个参数传递

时间:2018-10-29 05:54:21

标签: go

我有这个:

methods := [...]string{"POST", "PUT"}
router.HandleFunc(h.makeRegisterNewUser("/api/v1/register", v)).Methods("POST", "PUT")
methods以外有效的

未使用。如果我尝试这样做:

methods := [...]string{"POST", "PUT"}
router.HandleFunc(h.makeRegisterNewUser("/api/v1/register", v)).Methods(methods...)

我收到此错误:

  

不能将方法(类型[2] string)用作参数中的类型[] string   router.HandleFunc(h.makeRegisterNewUser(“ / api / v1 / register”,   v))。方法

我想不通

2 个答案:

答案 0 :(得分:5)

您不需要...中的methods := [...]string{"POST", "PUT"}

 methods := []string{"POST", "PUT"}

编辑: 数组与切片略有不同。 [...]表示法创建一个数组,而像Methods()这样的可变参数接受切片。如果您确实需要一个数组,则可以使用[:]进行分割:

router.HandleFunc(h.makeRegisterNewUser("/api/v1/register", v)).Methods(methods[:]...)

答案 1 :(得分:1)

混淆是由于Go和其他语言的命名有些不同。在Go中的各种语言中,类似于具有不同长度的数组的数据结构称为“数组”,“向量”,“列表”,称为“切片”。 Go中的“数组”是另一回事-固定长度的结构。