我对 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 的任何想法,对于这个函数会有很大帮助。
温温酱
相关分类