В Go, reflect.SliceOf()
делает тип, представляющий собой кусочек данного типа:В Go, что является обратным отражению.SliceOf()?
SliceOf возвращает тип среза с типом элемента т. Например, если t представляет int, SliceOf (t) представляет [] int.
Однако, у меня уже есть тип для []int
, но хочу, чтобы получить тип для int
. Есть ли простой способ сделать это? (Обратите внимание, что я использую в качестве примера int
. На самом деле, все, что я знаю, у меня есть кусочек, и мне нужно найти, какой тип каждого элемента среза есть.)
Я пытаюсь заполнить кусочек BOOL, INT, поплавка, или строки, с помощью отражения []string
... вот соответствующая часть:
numElems := len(req.Form["keyName"])
if structField.Kind() == reflect.Slice && numElems > 0 {
slice := reflect.MakeSlice(structField.Type(), numElems, numElems)
for i := 0; i < numElems; i++ {
// I have some other code here to fill out the slice
}
}
Но для того, чтобы заполнить срез, мне нужно знать тип среза I заполнение ...
Bingo! '.Elem()' сделал трюк. Этот магический метод делает всевозможные вещи. Спасибо за подробное объяснение. Это делается в отношении [martini-contrib/binding] (https://github.com/codegangsta/martini-contrib/tree/master/binding), поэтому я надеюсь, что ваш ответ принесет пользу многим людям. – Matt