
學習一門程式語言,除了學習語法,詞法,以及寫法等和編譯器有關的特性(就是什麼是語法錯誤)之外,需要對這個語言的結構有個清晰的認識,其中包括代碼目錄結構,源碼文件,以及代碼結構組織等。
那麼Go語言結構在目錄結構,源碼文件,以及代碼結構組織方面都是什麼樣子的呢。
1 目錄和源碼
首先我門看目錄和源碼,從之前的Go 語言教程我們知道,Go語言有工程目錄,和GOPATH環境變量對應,工程目錄結構有
bin 存放編譯後的可執行文件src 存放實現源碼,go get工具獲取的web上的模塊包都會放到這個目錄下,並有對應的目錄結構pkg 存放編譯後的庫文件(分不同平臺)Go語言的源碼文件格式為.go格式。如hello.go, main.go 。
2 包管理
區別於C/C++,Go語言有包的概念,關鍵字package。Go語言的包管理主要有兩種類型的包:main包和正常的模塊化的包,模塊包。
main包,即是包含主函數入口main方法的包模塊包,即是業務模塊的劃分為不同的業務後定義的包包的定義聲明:
都是統一的,在Go源碼文件(.go文件)使用package進行聲明,以下聲明一個名字為package_name的包
模塊包聲明
package package_name
main包聲明
package main
包的引入和使用
import "package_name"
或者下面寫法
import ( "package_name")
3 包的代碼結構
Go語言的結構,即main包和模塊包的源文件代碼結構,如下例子
模塊包代碼結構

main包代碼結構

Go 語言的代碼結構主要包括以下方面:
包的聲明和定義包的引入和使用模塊和方法的定義和使用程序的入口main方法的定義變量定義聲明和使用語句表達式注釋每個模塊包的目錄結構為:
$GOPATH/src/helloworld/hello.go
$GOPATH/src/helloworld/world.go
$GOPATH/src/helloworld/helloworld.go
......
每個包在目錄結構中以目錄樹的方式進行劃分,在包的引入時候需要帶上從src往下的目錄名字連成的目錄結構串,如/github.com/log/xxxx。
import "github.com/log/xxx"
包目錄下可以有多個源碼文件(.go),但是要求所有文件的頭部都是一致的包聲明(package xxxx)。
整個項目要求只能有一個main包和main入口方法。
4 補充說明
文中講到「程序入口方法main」,對於各種流行的語言,都會有main方法作為入口方法之說。入口方法其實代表的是一個程序執行的開始。當然在Go 語言中還有init方法的特性,init方法是Go編譯器特殊處理的,自動調用的方法。不需要代碼顯式調用。至於說語法和詞法,可以參考大學計算機學科學習的《編譯器原理》對其加深學習。