<b>第2章</b>
the go programming language
程 序 結 構
與其他程式設計語言一樣,go語言中的大程式都從小的基本元件建構而來:變量存儲值;簡單表達式通過加和減等操作合并成大的;基本類型通過數組和結構體進行聚合;表達式通過if和for等控制語句來決定執行順序;語句被組織成函數用于隔離和複用;函數被組織成源檔案和包。
上面這些内容中的大部分已在前一章介紹過,本章将更細緻地讨論go程式中的基本結構元素。示例程式有意進行了簡化,這有助于聚焦于語言本身而不是複雜的算法和資料結構。
<b>2.1 名稱</b>
<b></b>
go中函數、變量、常量、類型、語句标簽和包的名稱遵循一個簡單的規則:名稱的開頭是一個字母(unicode中的字元即可)或下劃線,後面可以跟任意數量的字元、數字和下劃線,并區分大小寫。如heapsort和heapsort是不同的名稱。
go有25個像if和switch這樣的關鍵字,隻能用在文法允許的地方,它們不能作為名稱:
另外,還有三十幾個内置的預聲明的常量、類型和函數:
這些名稱不是預留的,可以在聲明中使用它們。我們将在很多地方看到對其中的名稱進行重聲明,但是要知道這有沖突的風險。
如果一個實體在函數中聲明,它隻在函數局部有效。如果聲明在函數外,它将對包裡面的所有源檔案可見。實體第一個字母的大小寫決定其可見性是否跨包。如果名稱以大寫字母的開頭,它是導出的,意味着它對包外是可見和可通路的,可以被自己包之外的其他程式所引用,像fmt包中的printf。包名本身總是由小寫字母組成。
名稱本身沒有長度限制,但是習慣以及go的程式設計風格傾向于使用短名稱,特别是作用域較小的局部變量,你更喜歡看到一個變量叫i而不是theloopindex。通常,名稱的作用域越大,就使用越長且更有意義的名稱。
風格上,當遇到由單詞組合的名稱時,go程式員使用“駝峰式”的風格——更喜歡使用大寫字母而不是下劃線。是以标準庫中的函數名采用quoterunetoascii和parserequestline的形式,而不會采用quote_rune_to_ascii或quote_rune_to_ascii這樣的形式。像ascii和html這樣的首字母縮寫詞通常使用相同的大小寫,是以一個函數可以叫作htmlescape、htmlescape或escapehtml,但不會是escapehtml。