GO好久没用了,都忘得差不多了,前两天和基友突然想要写个获取和发送斗鱼弹幕的东西,所以就想要用GO实现一下,在这实现的过程中遇到了一个GOlang的坑,因此也耽搁了不少时间,以前从没遇到也没想过过会出现这种情况,自己也觉得很不可思议,所以这里记一下。
环境:Windows10 x64
GO版本:go version go1.5.3 windows/amd64
IDE:LiteIDE x28
其实很简单,就是变量名不能和包名一样,也就是说,假如前边import了url这个包以后,那么你的程序里(起码在这个文件里)就不能再出现url这个变量了,当然其实你定义一个url变量也不会报错,但是你会发现url包里的所有函数都不能用了。。。假如你用url.QueryUnescape(str)这个函数的话首先会提示你url这个包引用过来但是没有使用(GO的特性),另外还会提示你这里有语法错误……而IDE并不会报错(语法上是正确的),只有在编译的时候才会报这个错误。值得一提的是,代码提示也会跟着GO一起变得傻比了。。。
那解决办法要么别起和包名一样的变量名,要么就是给包一个别名?反正我是给变量换了一个名字。
其实我觉得这个可以算是BUG了吧?像url这种词在变量名中应该是很常用的吧,然而当你用到url这个包的时候就不能用这个变量名,我靠这是什么鬼逻辑?大大降低用户体验啊,有空可以给GO官方提一下能不能处理一下。不过我觉得提了也是白扯,我就不信只有我遇到这种问题。
其实后来发现不光这一点,还有类型名称和变量名也不能重复。。。肯定还会有其他不能重复和冲突的地方,但是以上两个是我已经遇到的。。。