linux - go 是否有特定于操作系统的软件包不能在其他操作系统上使用?

标签 linux windows go cross-platform go-packages

我不能称自己是 go 的绝对初学者,而且我也绝对不是专家。

今天,我注意到一些非常令人困惑的事情。我正在尝试 Unix 套接字和 Windows 命名管道,根据我的研究,有 2 个包支持 Windows 命名管道:

我的操作系统是 Linux,我决定尝试一下:获取包,并编写代码以便稍后在 Windows 计算机上进行测试,但是令我惊讶的是,至少在 VSCode 中,工具无法识别这些包。

例如,当我查看 npipe 时,我发现它只有 npipe_windows.go,如果我没记错的话,它应该会自动在 Windows 上使用。

所以,我认为 Go 中存在特定于操作系统的包的概念,对吧?如果是这样,是否意味着我无法使用 VSCode 的 go 工具等在 Linux 上针对 Windows 包进行编码?

在我看来,为了编写同时在 Linux 和 Windows 上运行的东西而必须切换系统是非常不方便的……尽管我想只有当我们在 Linux 上进行开发时才是正确的,而 Windows 应该涵盖这两者。

但对我来说,不能在 Linux 上开发东西是没有意义的;恕我直言,这是最好的开发环境(当然苹果相关代码除外)

我在这里遗漏了什么吗?

谢谢

最佳答案

所以,我认为我的问题实际上更多地涉及工具而不是 go 语言本身。 gopls如果您选择使用 go 语言服务器,则 是 VSCode 使用的工具。

正如README所说,它处于alpha并且不稳定,并且有known issues列在存储库中,这似乎是我困惑的根源。

我认为与我所看到的相关的主要问题是:

x/tools/gopls: does not handle build tags

关于linux - go 是否有特定于操作系统的软件包不能在其他操作系统上使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58654339/

相关文章:

c - 为什么 proc/self/maps 没有正确显示映射

Linux的线程本地存储实现

python - 将文本投影到透明不显眼的覆盖框上的屏幕

dictionary - 如何比较 map 的身份或本例中发生了什么?

pointers - 我如何取消引用 Go 中的指针?

pointers - 将结构转换为 byte slice 的特定地址

linux - preempt_rt 的缺点

linux - 如何处理EPOLLERR和EPOLLHUP?

c++ - 由于生成后步骤,未加载 native dll 的符号 (pdb)

c++ - 如何设置 Win32 richedit 的上/下边距