身為Ruby玩家,做事前(變數)總是不講(宣告)就直接做,但是隨著程式越寫越多之後,變數總是會在莫名其妙的地方相撞XD,有問題就給他扛下去!
好了!經過了昨天
與現在
的文不對題,
今天就來比較一下變數不一樣的地方。
首先先看一下Golang的變數宣告,
var tmp string
一開始看到這個我就頭痛,這啥鬼的變數宣告啊!!!!
先來顆普拿疼...
不過接著繼續看原來還有其他的宣告方法,
var tmp = "hello"
/*同等於*/
tmp := "hello"
看一看覺得這宣告也太牛了吧,
這~麽的方便?
But...就是這個 But
Golang不是靜 態 語 言
?
宣告起來怎麼跟JavaScript一樣?
尤其還看到這個:=
,
這還是我第一次看到這樣特別的用法,
不過也是這樣子的用法讓我現在在宣告都少打了很多字了呢!(且剛好那陣子JavaScript寫的有點多,一度懷疑他真的是靜態語言?)
然而在Ruby每個東西都可當個物件,
而Ruby有個好用的東西就是irb
以及Rails的rails console
,
這兩個都可以在終端機上使用,真的是好物!
以下以irb
做範例:
~ > irb
2.5.0 :001 > tmp = 123
=> 123
2.5.0 :002 > tmp = "hello"
=> "hello"
在宣告完一個型別後可以在立即把它換成其他型別,
是不是很方便啊(推坑),
不過這也會造成變數在宣告上如果定義不清楚的話很容易打架(<<受害者)。
且Golang還有一個常數宣告方法const
,
這個宣告下去之後變數就不能改變,
const TMP = "MyKey"
但是Ruby如果要宣告的常數不能被改變的話,
就得在後面加上freeze
這個函式,
TMP = "Yeeeeeee"
TMP.freeze //這步驟過後 TMP 才不能改變哦!
我覺得在常數這點Golang就表現得可圈可點(蓋章)
過往我在看任何程式碼都是看到像是tmp = 123
這樣子的宣告方法,
如今Golang來了個tmp := 123
這樣子的宣告,
讓我覺得好像哪邊怪怪的。(咦?)
但也因為這樣讓Golang很有彈性了!:=
讓我在寫程式時能比較靈活的宣告變數,提醒:
不過如果宣告了一種形別的變數就不能再任意改成另一種型別哦,
千萬別把它當成JavaScript寫XD
tmp := "aaaa"
tmp := 123 // 安捏姆湯喔!
tmp := "bbbb" //安捏賀喔!
變數的比較就先寫到這了,如果有相關問題或是有疑慮都可以回饋給我哦!