mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2025-12-20 12:44:20 +08:00
@@ -56,15 +56,15 @@ Go的標準庫已經提供了100多個package,用來完成一門程序語言
|
||||
|
||||
package main是一個比較特殊的package。這個package里會定義一個獨立的程序,這個程序是可以運行的,而不是像其它package一樣對應一個library。在main這個package里,main函數也是一個特殊的函數,這是我們整個程序的入口(譯註:其實C繫語言差不多都是這樣)。main函數所做的事情就是我們程序做的事情。當然了,main函數一般是通過是調用其它packge里的函數來完成自己的工作,比如fmt.Println。
|
||||
|
||||
我們必鬚告訴編譯器如何要正確地執行這個源文件,需要用到哪些package,這就是import在這個文件里扮演的角色。上述的hello world例子隻用到了一個其它的package,就是fmt。一般情況下,需要import的package可能不隻一個。
|
||||
我們必須告訴編譯器如何要正確地執行這個源文件,需要用到哪些package,這就是import在這個文件里扮演的角色。上述的hello world例子隻用到了一個其它的package,就是fmt。一般情況下,需要import的package可能不隻一個。
|
||||
|
||||
這也正是因爲go語言必鬚引入所有要用到的package的原則,假如你沒有在代碼里import需要用到的package,程序將無法編譯通過,同時當你import了沒有用到的package,也會無法編譯通過(譯註:Go語言編譯過程沒有警告信息,爭議特性之一)。
|
||||
這也正是因爲go語言必須引入所有要用到的package的原則,假如你沒有在代碼里import需要用到的package,程序將無法編譯通過,同時當你import了沒有用到的package,也會無法編譯通過(譯註:Go語言編譯過程沒有警告信息,爭議特性之一)。
|
||||
|
||||
import聲明必鬚跟在文件的package聲明之後。在import語句之後,則是各種方法、變量、常量、類型的聲明語句(分别用關鍵字func, var, const, type來進行定義)。這些內容的聲明順序併沒有什麽規定,可以隨便調整順序(譯註:最好還是定一下規范)。我們例子里的程序比較簡單,隻包含了一個函數。併且在該函數里也隻調用了一個其它函數。爲了節省空間,有些時候的例子我們會省略package和import聲明,但是讀者需要註意這些聲明是一定要包含在源文件里的。
|
||||
import聲明必須跟在文件的package聲明之後。在import語句之後,則是各種方法、變量、常量、類型的聲明語句(分别用關鍵字func, var, const, type來進行定義)。這些內容的聲明順序併沒有什麽規定,可以隨便調整順序(譯註:最好還是定一下規范)。我們例子里的程序比較簡單,隻包含了一個函數。併且在該函數里也隻調用了一個其它函數。爲了節省空間,有些時候的例子我們會省略package和import聲明,但是讀者需要註意這些聲明是一定要包含在源文件里的。
|
||||
|
||||
一個函數的聲明包含func這個關鍵字、函數名、參數列表、返迴結果列表(我們例子里的main函數參數列表和返迴值都是空的)以及包含在大括號里的函數體。關於函數的更詳細描述在第五章。
|
||||
|
||||
Go語言是一門不需要分號作爲語句或者聲明結束的語言,除非要在一行中將多個語句、聲明隔開。然而在編譯時,編譯器會主動在一些特定的符號(譯註:比如行末是,一個標識符、一個整數、浮點數、虛數、字符或字符串文字、關鍵字break、continue、fallthrough或return中的一個、運算符和分隔符++、--、)、]或}中的一個) 後添加分號,所以在哪里加分號合適是取決於Go語言代碼的。例如:在Go語言中的函數聲明和 { 大括號必鬚在同一行,而在x + y這樣的表達式中,在+號後換行可以,但是在+號前換行則會有問題(譯註:以+結尾的話不會被插入分號分隔符,但是以x結尾的話則會被分號分隔符,從而導致編譯錯誤)。
|
||||
Go語言是一門不需要分號作爲語句或者聲明結束的語言,除非要在一行中將多個語句、聲明隔開。然而在編譯時,編譯器會主動在一些特定的符號(譯註:比如行末是,一個標識符、一個整數、浮點數、虛數、字符或字符串文字、關鍵字break、continue、fallthrough或return中的一個、運算符和分隔符++、--、)、]或}中的一個) 後添加分號,所以在哪里加分號合適是取決於Go語言代碼的。例如:在Go語言中的函數聲明和 { 大括號必須在同一行,而在x + y這樣的表達式中,在+號後換行可以,但是在+號前換行則會有問題(譯註:以+結尾的話不會被插入分號分隔符,但是以x結尾的話則會被分號分隔符,從而導致編譯錯誤)。
|
||||
|
||||
Go語言在代碼格式上采取了很強硬的態度。gofmt工具會將你的代碼格式化爲標準格式(譯註:這個格式化工具沒有任何可以調整代碼格式的參數,Go語言就是這麽任性),併且go工具中的fmt子命令會自動對特定package下的所有.go源文件應用gofmt工具格式化。如果不指定package,則默認對當前目録下的源文件進行格式化。本書中的所有代碼已經是執行過gofmt後的標準格式代碼。你應該在自己的代碼上也執行這種格式化。規定一種標準的代碼格式可以規避掉無盡的無意義的撕逼(譯註:也導致了Go語言的TIOBE排名較低,因爲缺少撕逼的話題)。當然了,這可以避免由於代碼格式導致的邏輯上的歧義。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user