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是项目配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值