为什么这个 Go-Lang IntelliJ 插件与 Go 的语法不一致?

我对 Go 有点陌生,所以这可能是 Go 问题,而不是 IntelliJ 问题:我刚刚设置了 https://github.com/go-lang-plugin-org/go-lang-idea- plugin/来自 zipfile,在 IntelliJ 14 中。


我发现编译器和语法高亮不一致。


world, err := redis.String(c.Do("GET", "message1"))

if err != nil {

    fmt.Println("key not found")

}

产生以下错误消息。


*没有足够的参数调用 Redis.String。


仔细观察对 Redis.String 的调用,它似乎需要一个 interface+args。


func String(reply interface{}, err error) (string, error) {

     ....

    return "", fmt.Errorf("redigo: unexpected type for String, got type %T", reply)

}

因此,我可以通过简单地在调用末尾添加一个“错误”参数来欺骗 IDE 删除错误消息,如下所示:


world, err := redis.String(c.Do("GET", "message1"), err)

但是唉!这个“修复”让 go 编译器不高兴……它会报告这个消息(即使 IntelliJ 插件没有将其解释为错误)。


./t1.go:19: 单值上下文中的多值 c.Do()


关于为什么 IntelliJ Go Plugin 需要两个 args 而 GoLang 只需要一个 args 的任何想法,对于这个函数会有很大帮助。




倚天杖
浏览 214回答 1
1回答

温温酱

这不是您犯的错误,这只是我们目前在插件的特定部分遇到的问题,该部分负责处理此类事情。根据我的回答,请看问题1343和1222。谢谢你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go