首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将go接口对象转换/类型转换为具体类型

将go接口对象转换/类型转换为具体类型
EN

Stack Overflow用户
提问于 2019-08-12 12:48:41
回答 1查看 89关注 0票数 0

informer的实现中,可以提供如下所示的事件处理程序。

代码语言:javascript
运行
复制
podInformer.AddEventHandler(cache.ResourceEventHandlerFuncs {
   // When a new pod gets created
   AddFunc: func(obj interface{}) {
       k8s.handleAddPod(obj)
   },
   // When a pod gets updated
   UpdateFunc: func(oldObj interface{}, newObj interface{}) {
       k8s.handleUpdatePod(oldObj, newObj)
   },
   // When a pod gets deleted
   DeleteFunc: func(obj interface{}) {
       k8s.handleDeletePod(obj)
   },
})

这是一个处理Pod相关事件的示例事件处理程序。到目前为止,我已经编写了如下处理程序;但是,它无法读取对象。

我无法将obj interface{}类型转换为v1.Pod,并且尝试读取它失败。标志ok的值来自false。有人能建议一下这段代码中遗漏了什么吗?

代码语言:javascript
运行
复制
func (k8s *K8S) handleAddPod(obj interface{}) {
    pod, ok := obj.(v1.Pod)
    if ok {
        log.Debug("Status: " + string(pod.Status.Phase))
        log.Debug("Pod added: " + pod.Name + " " + pod.DeletionTimestamp.String())
    }
}
EN

回答 1

Stack Overflow用户

发布于 2019-08-12 14:11:00

我可以使用下面的代码读取obj的值和内容。

代码语言:javascript
运行
复制
func (k8s *K8S) handleAddPod(obj interface{}) {
    pod, ok := obj.(*v1.Pod)   // Added * here.  
    if ok {
        log.Debug("Status: " + string(pod.Status.Phase))
        log.Debug("Pod added: " + pod.Name + " " + pod.DeletionTimestamp.String())
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57455768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档