我对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,因为这个函数会有很大的帮助。