本文主要是介绍Gopls reports compiler error on vscode when having os/arch specific files,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在修改kubeedge代码时gopls报错:
cannot use &(internalContainerLifecycleImpl literal) (value of type *internalContainerLifecycleImpl) as InternalContainerLifecycle value in return statement: internalContainerLifecycleImpl does not implement InternalContainerLifecycle (missing method PreCreateContainer), compiler(InvalidIfaceAssign)
看代码发现internalContainerLifecycleImpl 是有实现 PreCreateContainer 这个方法的
但是vscode报了没有这个方法的错误,后面发现这个方法的实现是在xxx_linux.go后缀文件中,gopls使用了golang compiler的api,出现这个问题的环境是darwin (macos),因为golang compiler api在设定为darwin的环境下无法将xxx_linux,go这个特定os/arch文件考虑在内,所以在golang compiler api向gopls报了错,gopls将错误进一步报了出来(Gopls reports warning on vsc when creating os/arch specific files)。
如何在vscode解决这个问题:
第一种方法: 因为是环境问题导致,所以修改go env或者将代码置于linux环境远程调试
第二种方法(只针对vscode): 最小化改动,在kubeedge项目目录下创建.vscode目录,.vscode下创建settings.json文件, 内容为:
{"gopls": {"build.buildFlags": ["-tags=linux",// "-tags=darwin",]}
}
,.vscode是vscode的项目配置目录, settings.json是项目配置文件
这篇关于Gopls reports compiler error on vscode when having os/arch specific files的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!