V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
wzcloud
V2EX  ›  Go 编程语言

有没有大佬帮忙看看这个异常是怎么回事?

  •  
  •   wzcloud · 2022-05-30 14:54:19 +08:00 · 1430 次点击
    这是一个创建于 894 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在看 kubernetes 的 operator 开发教程,尝试着跑了下教程里面的代码,但是报错了(教程视频里面是正常运行的):

    package main
    
    import (
    	"context"
    	v1 "k8s.io/api/core/v1"
    	"k8s.io/apimachinery/pkg/runtime/schema"
    	"k8s.io/client-go/kubernetes/scheme"
    	"k8s.io/client-go/rest"
    	"k8s.io/client-go/tools/clientcmd"
    )
    
    func main() {
    	//config
    	config, err := clientcmd.BuildConfigFromFlags("", clientcmd.RecommendedHomeDir)
    	config.GroupVersion = new(schema.GroupVersion)
    	config.GroupVersion.Group = ""
    	config.GroupVersion.Version = "v1"
    	config.NegotiatedSerializer = scheme.Codecs
    	config.APIPath = "/api"
    	if err != nil {
    		panic(err)
    	}
    
    	//client
    	restClient, err := rest.RESTClientFor(config)
    	if err != nil {
    		panic(err)
    	}
    
    	//get data
    	pod := v1.Pod{}
    	err = restClient.Get().Namespace("default").Resource("pods").Name("test").Do(context.TODO()).Into(&pod)
    	if err != nil {
    		println(err)
    	} else {
    		println(pod.Name)
    	}
    }
    

    运行报错信息如下: panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x102e432b8]

    goroutine 1 [running]: main.main() /Users/xxx/main.go:15 +0x58

    进程 已完成,退出代码为 2

    补充说明:

    关于第十五行的结构体定义如下:

    type ContentConfig struct {
    	
    	AcceptContentTypes string
    	
    	ContentType string
    	
    	GroupVersion *schema.GroupVersion
    	
    	NegotiatedSerializer runtime.NegotiatedSerializer
    }
    

    我自己的本地运行环境是 MacOS12+GO1.18.2 。

    尝试把第十五行改成config.GroupVersion = &v1.SchemeGroupVersion也不行,一样的报错信息。。。

    3 条回复    2022-05-30 15:15:11 +08:00
    colatin
        1
    colatin  
       2022-05-30 14:59:33 +08:00
    显然 clientcmd.BuildConfigFromFlags 出错了,把 err 打出来
    wzcloud
        2
    wzcloud  
    OP
       2022-05-30 15:01:37 +08:00
    @colatin 嗯。。刚刚看了下,把赋值语句放到 if err 前面去了。。
    muchengxue
        3
    muchengxue  
       2022-05-30 15:15:11 +08:00
    报错信息提示的很明确,访问了不存在的内存地址或者空指针,看不出来的话,建议用 ide 的 debug 一行一行的看。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1389 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:36 · PVG 01:36 · LAX 09:36 · JFK 12:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.