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

我有这个:


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...)

我收到此错误:


不能在 router.HandleFunc(h.makeRegisterNewUser("/api/v1/register", v)).Methods 的参数中使用方法(类型 [2]string)作为类型 []string


我想不通这个


RISEBY
浏览 94回答 2
2回答

撒科打诨

你不需要...在methods := [...]string{"POST", "PUT"} methods := []string{"POST", "PUT"}编辑:数组与切片略有不同。该[...]符号创建一个数组,而可变参数函数(如Methods()接受切片)。如果你真的需要一个数组,你可以使用它的一部分[:]:router.HandleFunc(h.makeRegisterNewUser("/api/v1/register", v)).Methods(methods[:]...)

至尊宝的传说

混淆是由于 Go 和其他语言中的命名略有不同。类似不同长度数组的数据结构,在Go中被各种语言称为“array”、“vector”、“list”的数据结构被称为“slice”。而 Go 中的“数组”是另一回事——一种固定长度的结构。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go