当前位置: 首页 > 面试题库 >

接口{}的范围,它存储一个切片

冷夜洛
2023-03-14
问题内容

给定您具有接受功能的场景t interface{}。如果确定t是切片,我如何range在该切片上?

func main() {
    data := []string{"one","two","three"}
    test(data)
    moredata := []int{1,2,3}
    test(data)
}

func test(t interface{}) {
    switch reflect.TypeOf(t).Kind() {
    case reflect.Slice:
        // how do I iterate here?
        for _,value := range t {
            fmt.Println(value)
        }
    }
}

前往游乐场示例:http://play.golang.org/p/DNldAlNShB


问题答案:

好吧,我曾经使用过reflect.ValueOf,然后如果它是一个切片,则可以调用,Len()Index()在该值上调用以len在索引处获取切片和元素的。我认为您将无法使用范围操作来做到这一点。

package main

import "fmt"
import "reflect"

func main() {
    data := []string{"one","two","three"}
    test(data)
    moredata := []int{1,2,3}
    test(moredata)
}

func test(t interface{}) {
    switch reflect.TypeOf(t).Kind() {
    case reflect.Slice:
        s := reflect.ValueOf(t)

        for i := 0; i < s.Len(); i++ {
            fmt.Println(s.Index(i))
        }
    }
}

前往游乐场示例:http :
//play.golang.org/p/gQhCTiwPAq



 类似资料:
  • 问题内容: 我有一个接口,该接口由struct实现。 要获取模型实例,我具有以下辅助函数: 上面的方法允许我返回正确类型的Person实例(以后可以使用相同的方法轻松添加新模型)。 当我尝试执行类似的操作以返回模型切片时,出现错误。码: 去抱怨: 我的目标是回到请求任何机型的切片(是否,,,W / E)。我缺少什么,如何正确实施这样的解决方案? 问题答案: 简短的答案是您是正确的。结构的片段不等于

  • 直接从QML中存储信息,上面的这些方法是主要存储方法。事实上QtQuick最有效的存储方法是使用C++扩展接口调用本地存储系统或者类似Qt云存储使用网络编程接口调用远程存储系统。

  • 我试图更好地理解一旦Android11版本发布,我将能够做什么。 我的应用程序使用提供的图像文件路径创建相册,但使用Android11,我将无法直接访问文件。 根据Android开发人员的文档,他们最近引入了权限,但我不明白如果添加了这个权限,我是否能够继续通过访问文件。 有人有主意吗??? 谢谢 2021年1月更新 我在一个Android11虚拟设备上试用了我的应用程序,它似乎可以完美地工作,即

  • 根据文件 使用范围存储,除非应用需要访问存储在应用特定目录之外和MediaStore API可以访问的目录之外的文件。如果将应用特定文件存储在外部存储上,可以将这些文件放置在外部存储上的应用特定目录中,从而更容易采用范围存储。这样,当启用作用域存储时,应用将保持对这些文件的访问。 在我的情况下,我创建一个文本文件使用以下: 上面是在下面的位置创建文件(但没有可用的SD卡): 我正在对它进行写操作。

  • 我有一个接口,它是由struct实现的。 要获取模型实例,我有以下助手函数: 上述方法允许我返回一个正确类型的Person实例(以后可以使用相同的方法轻松添加新模型)。 当我尝试执行类似的操作以返回模型片段时,我得到了一个错误。代码: Go抱怨:中使用newPeople()(type[]Person)作为type[]Model 我的目标是返回所请求的任何模型类型的切片(无论是,,,w/e)。我遗漏

  • 问题内容: 我有很多不同提供商的IP范围。例如 我将此IP转换为int32: 我的任务: 通过用户IP地址查找提供者名称(例如192.168.2.20(3232236052)) 在MySQL中很简单: Redis怎么做? 问题答案: 这取决于您是否认为您的IP范围可以重叠。如果不是,则解决方案非常简单: 使用哈希的集合来存储提供者数据 使用zset索引范围的最大值 检索最大值大于IP的(唯一)范围