使用reflect.Typeof()进行golang类型断言

2024-03-12

我试图用字符串值(名称)来识别结构。reflect.TypeOf回报Type.

但是类型断言需要一个type.

我怎样才能铸造Type to type?

或者有什么建议可以处理吗?

http://play.golang.org/p/3PJG3YxIyf http://play.golang.org/p/3PJG3YxIyf

package main

import (
"fmt"
"reflect"
)
type Article struct {
    Id             int64       `json:"id"`
    Title          string      `json:"title",sql:"size:255"`
    Content        string      `json:"content"`
}


func IdentifyItemType(name string) interface{} {
    var item interface{}
    switch name {
    default:
        item = Article{}
    }
    return item
}

func main() {

    i := IdentifyItemType("name")
    item := i.(Article)
    fmt.Printf("Hello, item : %v\n", item)
    item2 := i.(reflect.TypeOf(i))  // reflect.TypeOf(i) is not a type
    fmt.Printf("Hello, item2 : %v\n", item2)

}

如果您需要打开外部接口的类型,则不需要反射。{}

switch x.(type){
  case int: 
    dosomething()
}

...但是如果您需要在接口中打开属性的类型,那么您可以这样做:

s := reflect.ValueOf(x)
for i:=0; i<s.NumValues; i++{
  switch s.Field(i).Interface().(type){
    case int: 
      dosomething()
  }
}

我还没有找到更干净的方法,我很想知道它是否存在。

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

使用reflect.Typeof()进行golang类型断言 的相关文章

随机推荐

  • Swift - 如果小数等于 0,如何从浮点数中删除小数?

    我显示的距离为一位小数 如果它等于 0 例如 1200 0Km 我想删除该小数 我该如何快速做到这一点 我这样显示这个数字 let distanceFloat Float currentUser distance as NSString f
  • Google Chrome 的 Javascript 控制台键盘快捷键

    我想使用调试我的 javascript 应用程序谷歌浏览器3的开发者工具 一切都很好 直到我真正想开始调试 我可以设置断点等 但我不想使用鼠标而是使用键盘进行调试 In Firefox Firebug I can use F10 F11 a
  • HttpClient.GetAsync 在具有锁屏访问以及 TimeTrigger 或 MaintenanceTrigger 的后台任务中失败

    在 Windows 8 Metro 应用程序的后台任务中运行时 Client GetAsync 对我来说似乎失败 我尝试同时使用 TimeTrigger 和 MaintenanceTrigger 看来也不例外 调试它时 它只是在该行退出 如
  • 具有多个选项的警报

    只是想知道 是否可以创建具有多个选项的警报 例如 在 Facebook 中 当您在未完成输入消息的情况下尝试关闭选项卡 窗口时 会弹出一条带有 离开此页面 和 留在此页面 选项的警报 以表单为例 您正在寻找 window onbeforeu
  • 在机器人框架中连接两个字符串的最简单方法。?

    给定两个字符串 a b 连接它们并分配给机器人框架中的新变量的最简单方法是什么 我尝试了这种简单的Pythonic方式 但它不起作用 var a b 您可以使用Catenate http robotframework org robotfr
  • 适用于 iPhone 的 Google Talk API

    有谁知道如何使用 GData API 连接到 Google Talk 是否有更好的 iphone 开发 API 用于连接 Google Talk 我一直在查看为 API 下载的示例 但没有看到任何支持 This http code goog
  • 用于演示的 R 演示 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 计算 3D 平面的 Voronoi 图

    是否有代码 库可以计算 3D 平面 平行四边形 的 Voronoi 图 我检查了 Qhull 它似乎只能处理点 在它的示例中 Voro 可以处理不同大小的球体 但我找不到任何多边形 在这张图片中 3d 中的样本平面 https i stac
  • Ruby 无法解析 CSV 文件:CSV::MalformedCSVError(第 1 行中的非法引用。)

    Ubuntu 12 04 LTS Ruby ruby 1 9 3dev 2011 09 23 修订版 33323 i686 linux 轨道 3 2 9 以下是我收到的 CSV 文件的内容 date time settlement id t
  • oAuth 和 Codeigniter 与 MongoDB

    我正在使用 Alex Bilbie 制作的 Codeigniter 的 oAuth 库 它是为 MySQL 设计的 有人用过 MongoDB 吗 我将尝试将其 转换 为 MongoDB 但存储库中有很多文件 服务器设置只需要其中很少的文件
  • 从不平衡二叉树中随机选择一个节点

    我的一位朋友遇到了以下面试问题 我们都不太确定正确答案是什么 有谁知道如何解决这个问题 给定一个不平衡二叉树 描述一种随机选择节点的算法 使得每个节点被选择的概率相等 您只需遍历树一次即可完成此操作 该算法与列表相同 当您看到树中的第一个项
  • 您可以使用 POST 而不是 GET 进行 struts2 操作重定向吗?

  • MySQLDataReader在c#中检索Null值问题

    我目前正在开发一个 C 项目 该项目将导出 MySQL 数据 导出适用于服务器内的任何数据库 因此我不会知道表中的字段和数据类型 也不会知道表中的字段是否允许空值 在测试过程中 我发现导出工作正常 但如果字段允许 null 则当 mysql
  • 康威与 Python 的生命游戏

    我喜欢上了 Conway 的 生命游戏 并开始尝试用 Python 编写它 目前我还没有为程序的边界编写任何代码 所以我只是就我现在拥有的东西寻求帮助 我在初始化 闪烁器 阵型时似乎遇到了麻烦 它没有像应有的那样振荡 而是似乎将自己变成了立
  • 使用 buildozer 打包 kivy 应用程序时如何修复“java.lang.module.FindException:未找到模块 java.se.ee”错误

    我正在尝试打包我的 kivy 应用程序 python3 但是当我运行命令时buildozer v android debug看到这个错误 Cwd home javier buildozer android platform android
  • client-go:将 kubernetes json 文件解析为 k8s 结构

    我想解析 kubernetes 清单文件 json yaml 并能够将它们转换为 k8s 结构 以便稍后操作它们 我知道有 NewYAMLOrJSONDecoder Decode 函数 https github com kubernetes
  • C# 中的正确柯里化

    给定一个方法DoSomething它接受一个 无参数 函数并以某种方式处理它 有没有比下面的代码片段更好的方法来为带有参数的函数创建 重载 public static TResult DoSomething
  • VB.NET 中的隐式转换

    这个问题是针对懒惰的 VB 程序员的 请 在 vb 中我可以做到并且不会出现任何错误 实施例1 Dim x As String 5 Dim y As Integer 5 Dim b As Boolean True 实施例2 Dim a As
  • 如何显示非模式对话框并立即在其中显示信息?

    我想在屏幕上显示一个无模式对话框并在其中显示一些信息 但是 如果我按照以下方式使用它 则会出现一些问题 function showdialog XXX heavy work update the dialog heavy work upda
  • 使用reflect.Typeof()进行golang类型断言

    我试图用字符串值 名称 来识别结构 reflect TypeOf回报Type 但是类型断言需要一个type 我怎样才能铸造Type to type 或者有什么建议可以处理吗 http play golang org p 3PJG3YxIyf