godef可以打印出Go源代码中的符号,很多集成开发工具都集成了它,并且提供了Go to Definition
的命令和快捷键,可以迅速的跳转到方法和变量的声明的地方,非常的方便。
比如我常用的vscode-go,就提供了这样的功能,但是目前godef有一个bug,就是不能跳转标准库net
包下的方法定义,这个bug已经提交到github上: #18, 大约在6月的时候就发现了这个bug,不清楚作者为什么没有fix,事实上早有人提供了修改的pull request。这个bug产生的原因是godef没有处理好"C"库。
我在这里把修改方法记录一下,你可以手工的修改编译godef。
找到godef文件夹下的parser文件(go/parser/parser.go),在 1970行增加一个判断。
|
|
这样你的godef就可以正常工作了。
另外,如果你升级到Go1.7发现vscode代码自动完成功能不起作用的话,可以尝试在终端中执行gocode close
,这个bug可以参考:441。
update on 2017-03-16:
查看相关的isses: #856、#496、#662、#440 #442 #515 #567 #459 #517 #667
你可以使用gogetdoc
代替godef
,在配置中加上 "go.docsTool": "gogetdoc"
。
或者使用实验性的go-languageServer: "go.useLanguageServer": true
。