首页 > 解决方案 > 将接口元素附加到接口 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)

标签: go

解决方案


表达式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)
            }
        }

推荐阅读