我在安装适用于 Neovim 的
gopls
LSP 时遇到问题。我安装了 go,但是当我使用 mason 安装 gopls 服务器时,我收到以下消息:
✗ gopls
▼ Displaying full log
Installing go package golang.org/x/tools/[email protected]…
golang.org/x/tools/internal/event/keys
golang.org/x/tools/internal/diff
golang.org/x/tools/gopls/internal/util/frob
# golang.org/x/tools/internal/diff
/home/yossef/go/pkg/mod/golang.org/x/[email protected]/internal/diff/ndiff.go:92:13: error: expected ‘(’
92 | func isASCII[S string | []byte](s S) bool {
| ^
/home/yossef/go/pkg/mod/golang.org/x/[email protected]/internal/diff/ndiff.go:92:16: error: expected ‘]’
92 | func isASCII[S string | []byte](s S) bool {
| ^
/home/yossef/go/pkg/mod/golang.org/x/[email protected]/internal/diff/ndiff.go:92:16: error: expected ‘;’ or newline after top level declaration
/home/yossef/go/pkg/mod/golang.org/x/[email protected]/internal/diff/ndiff.go:93:21: error: expected declaration
93 | for i := 0; i < len(s); i++ {
|
....
....
....
| ^
/home/yossef/go/pkg/mod/golang.org/x/[email protected]/go/ssa/util.go:379:9: error: expected declaration
379 | return vals
| ^
/home/yossef/go/pkg/mod/golang.org/x/[email protected]/go/ssa/util.go:381:1: error: expected declaration
381 | }
| ^
spawn: go failed with exit code 2 and signal 0.
Go版本:
go version go1.18 gccgo (GCC) 13.2.1 20240316 (Red Hat 13.2.1-7) linux/amd64
如何解决这个问题???
根据 https://github.com/golang/tools/tree/master/gopls#supported-go-versions,gopls 仅支持最新版本之前的两个版本。
因此,goplus 仅通过版本 [email protected] 支持 Go 1.18,并且您尝试安装的版本 (0.15.2) 较新。要么固定该版本的 gopls,要么使用更新版本的 Go。