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

时间:2015-02-23 22:08:58

标签: syntax intellij-idea interface go

我对Go有点新,所以这可能是Go问题,而不是IntelliJ问题:我刚从IntelliJ 14中的zip文件设置https://github.com/go-lang-plugin-org/go-lang-idea-plugin/

我发现编译器与语法高亮显示器不一致。

world, err := redis.String(c.Do("GET", "message1"))
if err != nil {
    fmt.Println("key not found")
}

产生以下错误消息。

  

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

仔细观察对Redis.String的调用,它似乎采用了一个接口+ args。

func String(reply interface{}, err error) (string, error) {
     ....
    return "", fmt.Errorf("redigo: unexpected type for String, got type %T", reply)
}

因此,我可以欺骗IDE删除rror消息,只需在调用结束时添加“err”arg,如下所示:

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

!这个“修复”使go编译器不满意......并且它报告了这条消息(即使IntelliJ插件没有将此解释为错误)。

  

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

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

1 个答案:

答案 0 :(得分:1)

这不是你犯的错误,这只是我们目前在插件的特定部分处理的一个问题,它可以处理这样的事情。

根据my answer,请注意问题13431222

谢谢。