range over 存储切片的接口{}

2023-11-25

假设您有一个接受的函数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() and 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

range over 存储切片的接口{} 的相关文章

随机推荐

  • Powershell - 通过删除最后几个字符来重命名文件名

    我想删除多个文件名的最后 11 个字符 例如 我有这些文件名 ABCDE 2015 10 20 HIJKL 2015 10 20 MNOPQ 2015 10 20 RSTUV 2015 10 20 想将它们重命名为 ABCDE HIJKL
  • 将 linq 中的字符串转换为大数据库上的实体

    我想将 linq toEntity 中的字符串转换为 int 但 Convert ToInt32 和 int Parse 无法转换为 sql 我的数据库很大 无法将它们全部存入内存 超过 60k 记录并变得更大 我的查询是这样的 int m
  • 在 Django 网站中嵌入 Bokeh 图会导致空白页面且没有错误消息

    我正在尝试将 Bokeh 图嵌入到具有上传按钮的 Django 网站中 我正在使用给出的例子here作为起点 然后添加有关嵌入的说明here 这是我的问题的后续here因为我现在有一个新问题 当我转到与其关联的网址时 该图不会显示 但没有错
  • 如何在激活器中获取 IEclipseContext

    我在 Eclipse 4 RCP 应用程序中遇到了一个问题 我需要记录一些事件 我需要以某种方式获得对记录器的引用 我知道 如何使用IEclipseContext 但我没有找到如何获得IEclipseContext没有依赖注入 我无法在激活
  • UITableView reloadRowsAtIndexPaths 隐藏行

    我将 UITableView 与静态单元格一起使用 如果我使用reloadData 比一切都好 如果我尝试reloadRowsAtIndexPaths它隐藏行 如果我上下拖动 tableView 更新单元格时 就会出现行 如果您的表格单元格
  • 如何向应用主题添加CardView属性?

    我的问题类似于 如何将 CardView 属性放入样式中 但我需要更深入 我正在使用 AppCompat 主题 我的样式看起来像 style name AppTheme parent Theme AppCompat Light DarkAc
  • 使用C在Linux中获取用户组的正确方法

    我想知道是否有用于 unix 命令组的替代 C 库 groups lists all the group id s of the user 有一个名为 getgroups 的方法 但它返回此方法的用户组 有没有办法使用 C 获取特定用户的组
  • Typescript:在编译时在其自己的属性中获取类名

    例如 如果我们有一个这样的类 class MyClass className string 是否可以在编译时将 MyClass 分配给 className 属性 编辑 已经尝试过 this constructor name 然而 后者对缩小
  • Android:TimePicker setIs24HourView 不起作用

    我正在尝试以 24 小时格式使用 TimePicker 并且我正在使用 setIs24HourView true 但我仍然没有在 TimePicker 上获得 24 小时格式 这是我在 Activity 的 onCreate 中的代码 ti
  • Python While 循环突破问题

    我的问题是关于 while 循环的标志 这有效 但不像我想象的那样 我认为我不明白某些事情 所以如果有人能够解释 那就太好了 根据我的理解 一旦满足我的条件之一 这应该会打破循环 因此 如果我输入 q 它应该会中断并停止循环 但发生的情况是
  • Keycloak:缺少领域公钥

    当我访问 keycloak 管理控制台 远程 并创建客户端时 keycloak OIDC JSON 没有公钥 我希望 JSON 中有类似的内容 realm public key MIIBIjANBg 最新的 keycloak 中的 keyc
  • 如何为私有子网中部署的服务配置api网关?

    我在私有子网中部署了一个 Web 服务 而在公共子网中没有 ELB 现在我想把它曝光给公众 我可以使用API 网关作为http代理吗 公开 有人知道该怎么做吗 该服务必须是公开的 API Gateway 才能连接到它 您可以使用 SSL 客
  • 将单词拆分为所有可能的“子词” - 所有可能的组合

    我正在尝试将一个单词拆分为子单词 所有可能的排列 Input Bang Output B ang Ba ng Ban g B a ng B an g Ba n g B a n g 我希望我涵盖了所有可能的安排 Bang 的方法 我想了很久却
  • 使用 sed,在模式上方或下方插入一行? [复制]

    这个问题在这里已经有答案了 我需要通过在唯一模式的正下方或上方插入一行或多行来编辑大量文件 请建议如何使用sed awk perl 或其他任何东西 在外壳中 谢谢 例子 some text lorem ipsum dolor sit ame
  • 连接python套接字和java套接字

    我一直在尝试在 Java 客户端套接字和 Python 服务器套接字之间发送一个简单的字符串 这是服务器套接字的代码 HOST PORT 12000 s socket socket socket AF INET socket SOCK ST
  • 如何使用 Cmake 和 NASM 构建二进制文件

    我正在学习 x64 并且我讨厌 make 所以我试图让 cmake 使用 NASM 构建二进制文件 cmake 大致支持这一点 但文档很糟糕 这就是我现在所做的工作 将堆栈溢出中的内容拼凑在一起 然后删除所有不会破坏构建的内容 cmake
  • 绑定到当前项目 (WPF)

    我正在尝试绑定一个ListView控制到一个DataTable 但 WPF 绑定系统似乎抱怨我指定的绑定路径 举个例子 一个GridViewColumn定义如下
  • CMake 对 C 文件禁用 -std=c++11 标志

    我正在尝试建立bkchaind 一种构建选项是使用 cmake 因此我使用 Homebrew OSX 10 9 1 安装它 当我做cmake不过 我得到 2 Building C object json rpc cpp src jsonrp
  • 在 Java 中 fork 一个进程

    是否可以将正在执行的 程序 从单个执行序列创建为两个子程序的完整分支 生成的子程序完全相同 它们具有相同的执行顺序和值 但现在它们是两个不同的程序 这就像创建一个对象的克隆 从而为我们提供了两个相同类型的不同对象来处理 但这里我们想要创建一
  • range over 存储切片的接口{}

    假设您有一个接受的函数t interface 如果确定t是一个切片 我该怎么做range在那片上 func main data string one two three test data moredata int 1 2 3 test d