我有这个:
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))。方法
我想不通
答案 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中的“数组”是另一回事-固定长度的结构。