go - 将接口元素附加到接口 Golang
问题描述
我有一个函数可以接受所有类型的结构作为接口。如果我尝试打印
s.Index(i)
它给了我价值观。但是,一旦我将其附加到
allRows []接口{}
并打印出来。我得到的不是值,而是我传递函数的结构类型。例如。
fmt.Println("AllRows",allRows)
[<adminPanel.allBeaconInfo 值> <adminPanel.allBeaconInfo 值> <adminPanel.allBeaconInfo 值> <adminPanel.allBeaconInfo 值> <adminPanel.allBeaconInfo 值>]
func pagination(c *gin.Context, st interface{}) {
var allRows []interface{}
switch reflect.TypeOf(st).Kind() {
case reflect.Slice:
s := reflect.ValueOf(st)
for i := 0; i < s.Len(); i++ {
allRows=append(allRows,s.Index(i))
fmt.Println(allRows)
}
}
fmt.Println("AllRows",allRows)
解决方案
表达式s.Index(i)
计算为reflect.Value
包含实际切片元素的 a。调用Value.Interface()以获取实际的切片元素。
var allRows []interface{}
switch reflect.TypeOf(st).Kind() {
case reflect.Slice:
s := reflect.ValueOf(st)
for i := 0; i < s.Len(); i++ {
allRows=append(allRows,s.Index(i).Interface())
fmt.Println(allRows)
}
}
推荐阅读
- machine-learning - 是一种热编码没有虚拟陷阱
- vue.js - RXJS 运算符不是函数
- c++ - 具有静态方法的模板专用类是否占用存储空间?
- sql-server - 无法在 T-SQL 中提取 Json 值
- azure - 禁用
我有一个网络应用程序,我正在尝试禁用早于 1.2 的 TLS 版本。即:我不想支持 TLS 1.0 或 1.1。
1) 我在 Azure 门户中设置了以下内容。
- ios - iOS如何防止应用程序窃取保存在谷歌驱动器中的文件?
- python - Haarcascades 在 OpenCV 中不起作用
- swift - NSTable 视图 DataSource 和 Delegate 在更新到 Swift 4.1 后停止工作
- java - JavaFX - ListView - 泛型 - CellFactory