内容简介:近日,怀着新语言的一门心思,在键盘上敲敲打打。golang的强类型有时候着实让人有点摸不着头脑(对于习惯了php的老人来说)下面是一个golang的例子
近日,怀着新语言的一门心思,在键盘上敲敲打打。golang的强类型有时候着实让人有点摸不着头脑(对于习惯了 php 的老人来说)
下面是一个golang的例子
再看看命令行
虽然if中间的var赋值user挺蠢的,而且就golang的强类型申明user类型之后再来var显得很小白,但是梳理整个逻辑,发现了一个重要的信息点,甚至是背心出了一身冷汗!
重现:最开始我想的是ResponseSuc里头统一返回user,所以就用了 if else
做user的数据处理,按照php的逻辑,第一个if里头不用var,直接 user=****
就行了,根本不用管类型。(所以var的出现,就是因为去掉var之后限制了user的类型而产生,为了语法不报错而不经过大脑,蠢哭)
结果看到了,就是第一个user打印出来了一大坨数据,而最下面的user没有数据。究其原因,就是因为两个user根本不是一个玩意儿
反思
php为弱类型语言,这种非同类型赋值简直写起来不要太舒服。然而golang的语法和php对比,终于让我发现,弱类型的严重缺陷,见下图
注
golang中if之前就已经开始报错,因为是非同类型的比较,程序根本运行不起来
注
php里头可见 0=="0"
是true的
同理,可以验证 null
, ""
等特殊的玩意儿
那么有什么影响呢
好吧,虽然用了谷歌,还是追到了腾讯的ip上 PHP弱类型在实战中导致的漏洞总结
附上php的类型比较图 php.net
最后,帖子浏览完,感觉大部分PHP系统可能都在裸奔!
友情链接
《刑法》案例查询
以上所述就是小编给大家介绍的《php作为弱类型语言的坑点》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Golang 中函数作为值与类型
- Swift 中如何使用字典类型作为范型约束
- 枚举 – 为什么Flux架构示例使用常量作为动作类型而不是字符串?
- 作为 Swift 5 最值得期待的新功能之一,Result 类型该如何使用?
- 使用Elasticsearch作为主数据存储
- 如何把MongoDB作为循环队列
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Haskell School of Music
Paul Hudak、Donya Quick / Cambridge University Press / 2018-10-4 / GBP 42.99
This book teaches functional programming through creative applications in music and sound synthesis. Readers will learn the Haskell programming language and explore numerous ways to create music and d......一起来看看 《The Haskell School of Music》 这本书的介绍吧!