1. 程式人生 > >Go語言語法快速入門(1)

Go語言語法快速入門(1)

題外話

go的語法特性相較於一些新語言來說比較少,甚至還比不過一些比較老的語言,例如,它沒有隱式的數值轉換,沒有建構函式和解構函式,沒有運算子過載,沒有預設引數,也沒有繼承,沒有泛型,沒有異常,沒有巨集,沒有函式修飾,更沒有執行緒區域性儲存。

go和python的程式設計哲學有點像,做一件事只有一件對的方法,所以他的編譯檢查非常嚴格,不僅有和python類似的強制格式,除此之外未使用的變數匯入後未使用的包都會導致編譯錯誤。(這個特性在ide中有一個比較蛋疼的問題是變數第一次宣告時就會就會顯示一個錯誤,等到使用時錯誤才會消掉,看著非常不舒服)

這種思想可能會導致程式設計初學者比較難以入門,不過我個人還是比較喜歡的。首先我們不僅僅是自己寫程式碼,很多時候還要看別人的程式碼,而這些嚴格的編譯規定,就可以使在’看’程式碼的時候不容易被誤導。(比如一些遺留系統常常有一些蛋疼的不知道幹什麼的變數,後來發現根本就沒有被用到)

(除了這個之外,python和go在追求簡潔上的思想也有許多共同點)

變數

使⽤關鍵字 var 定義變數
(話說現在好像比較新的靜態語言都用var來宣告變量了)

var x int
var f float32 = 1.6

如果有初始化值,可以自動推斷型別,就可以省去型別宣告。好多比較新的靜態語言也加入了型別推導的功能了,因為型別本來就是多餘資訊,有初始化值已經可以表明這個變數是什麼東西了。
(而在大部分動態語言中 宣告和賦值根本沒有區別 沒有編譯期檢查,所以連類似var這樣的東西都沒有,第一次賦值即是宣告)

感覺現在程式語言的發展趨勢是越來越向好寫的角度發展了:)

var
s = "abc"

一次定義多個變數

var x, y, z int
var s, n = "abc", 123

還有這種寫法

var (
a int
b float32
)

不過我個人不喜歡記這些亂七八糟和其他語言沒有共性的語法,不常寫很快就忘了,常寫的話在和其他語言混寫的時候就很不習慣。

方法可以有多返回值,這個在動態語言裡比較常見,不過靜態語言見的不多
_是一個佔位符,可以理解成宣告一個變數但是不使用

func test() (int, string) {
return 1, "abc"
}
func main() {
_, s := test()
println
(s) }