近日,懷着新語言的一門心思,在鍵盤上敲敲打打。golang的強類型有時候着實讓人有點摸不着頭腦(對於習慣了php的老人來講)
下面是一個golang的例子php
再看看命令行golang
雖然if中間的var賦值user挺蠢的,並且就golang的強類型申明user類型以後再來var顯得很小白,可是梳理整個邏輯,發現了一個重要的信息點,甚至是背心出了一身冷汗!重現:最開始我想的是ResponseSuc裏頭統一返回user,因此就用了
if else
作user的數據處理,按照php的邏輯,第一個if裏頭不用var,直接user=****
就好了,根本不用管類型。(因此var的出現,就是由於去掉var以後限制了user的類型而產生,爲了語法不報錯而不通過大腦,蠢哭)ui結果看到了,就是第一個user打印出來了一大坨數據,而最下面的user沒有數據。究其緣由,就是由於兩個user根本不是一個玩意兒spa
php爲弱類型語言,這種非同類型賦值簡直寫起來不要太舒服。然而golang的語法和php對比,終於讓我發現,弱類型的嚴重缺陷,見下圖.net
注
golang中if以前就已經開始報錯,由於是非同類型的比較,程序根本運行不起來命令行
注
php裏頭可見0=="0"
是true的code
同理,能夠驗證null
,""
等特殊的玩意兒ip
那麼有什麼影響呢get
好吧,雖然用了谷歌,仍是追到了騰訊的ip上PHP弱類型在實戰中致使的漏洞總結it
附上php的類型比較圖php.net
最後,帖子瀏覽完,感受大部分PHP系統可能都在裸奔!
友情連接
《刑法》案例查詢