Невозможно распространить массив для передачи в виде нескольких аргументов - PullRequest
0 голосов
/ 29 октября 2018

У меня есть это:

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]) как строку типа [] в аргументе router.HandleFunc (h.makeRegisterNewUser ( "/ API / v1 / регистр", v)). Методы

Я не могу понять это

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Путаница возникает из-за немного разных имен в Go и других языках. Структура данных, которая напоминает массив различной длины и называется «массив», «вектор», «список» на разных языках в Go, называется «срез». А «массив» в Go - это другая вещь - структура фиксированной длины.

0 голосов
/ 29 октября 2018

Вам не нужно ... в methods := [...]string{"POST", "PUT"}

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

Edit: Массивы немного отличаются от ломтиков. Нотация [...] создает массив, в то время как переменная функция, такая как Methods(), принимает срез. Если вам действительно нужен массив, вы можете взять его с помощью [:]:

router.HandleFunc(h.makeRegisterNewUser("/api/v1/register", v)).Methods(methods[:]...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...