簡體   English   中英

在Go中,reflect.SliceOf()的反轉是什么?

[英]In Go, what's the inverse of reflect.SliceOf()?

在Go中, reflect.SliceOf()使一個Type表示給定Type的切片:

SliceOf返回元素類型為t的切片類型。 例如,如果t表示int,則SliceOf(t)表示[] int。

但是,我已經有一個Type for []int但是想要獲得一個Type for int 有一個簡單的方法嗎? (注意,我使用int作為示例。實際上,我所知道的是我有一個切片,我需要找到切片的每個元素的類型。)

我正在嘗試使用反射從[]string填充bool,int,float或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
    }
}

但是為了填寫切片,我需要知道我填寫的切片的類型...

在您的情況下,您已經擁有元素類型: structField.Type() 您可以使用reflect.New(t).Elem()來獲得“可編輯”的reflect.Value類型。 填充該值后,可以調用slice.Index(i).Set(...)將該值分配給生成的切片。

要回答你的問題的字母,如果你有一個切片並需要填充它,假設你有一個[]intreflect.Type ,那么你可以調用.Elem()來獲取intreflect.Type

有關可在Type上調用的方法,請參閱類型文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM