最近,一门心思在新语言上敲敲键盘。golang的强类型有时会让人有点迷惑(对于用惯了php的老人来说)。下面是golang的例子再看命令行。if中间的var赋值虽然很傻,但是在golang中强类型声明了用户类型之后,用var好像很傻,但是梳理了整个逻辑之后,发现了一个重要的信息点,以及连背心都冒出了冷汗!复现:一开始以为ResponseSuc会统一返回user,所以用ifelse来处理用户数据。按照PHP的逻辑,第一个if不用var,直接user=****就可以了。根本不关心类型。(所以var的出现是由于去掉var后用户类型的限制,为了不经过大脑就报语法错误,傻哭)结果我看到了第一个用户打印了大量数据,而最后一个以下用户没有数据。原因是这两个用户根本不是一个东西。反观PHP作为弱类型语言,这种非同类型赋值写起来简直不要太舒服。不过golang和php的语法对比终于让我发现弱类型的严重缺陷,看下图,注意golang中的if已经开始报错了,因为是不同类型的对比,程序根本无法运行。注意0=在php中可以看出==”0”同理,可以验证null,””等特殊的东西,那么有什么影响呢?嗯,虽然用了谷歌,但在实战中还是赶上了弱PHP类型对腾讯IP造成的漏洞。总结附上php.net的类型对比图最后浏览帖子,感觉大部分PHP系统可能都裸奔了!友情链接《刑法》案例查询
