咱們在上一節時編寫了第一個Hello World
這塊代碼咱們從上向下來看。
第一行是package main,這裏是指的包的概念,在go語言中包是表明這個文件夾中全部go代碼的目錄,這裏是main,在Go語言程序中一個可獨立執行的程序必須須要有mian這個包,即package main是咱們整個程序的入口。而咱們平常編寫時會新建各類各樣用途的go文件,咱們一般使用不一樣的文件夾來區分,這時不一樣文件夾中的文件咱們統一採用一種包的命名方式,便於咱們在其餘地方使用。詳細使用方式將在後續的代碼編寫過程當中詳細講解。git
在咱們平常編寫包名時應使用簡潔、富有含義的名稱,例如咱們這是一個工具包,則使用package utilgithub
繼續向下看代碼,咱們能夠看到golang
import ( "fmt" "net/http" )
這裏是導入操做,導入咱們在當前go文件中使用的全部包,在go語言初期時咱們在導入這些包時須要先將其下載到本地,而如今1.14版本中module功能已基本穩定,咱們能夠在這裏直接使用。有一些跑題,module後續咱們也會講到。
迴歸主題,在import的括號中咱們看到裏面包含了兩個包,第一個fmt包是咱們使用的打印包,屬於官方包,第二個是net/http包,是用於http服務器搭建使用的包,一樣屬於官方包。固然咱們還會使用一些其餘第三方的包,例如:「"google.golang.org/grpc"」
這裏咱們是導入兩個以上的包,咱們須要使用(),在咱們平常使用時,若是隻導入一個包,咱們能夠直接寫服務器
import "fmt"
注意,在Go語言語法中,括號永遠都是在代碼後面,而不能換行到新的一行,若是括號在下面,在程序編譯時Go會在括號上面的一行代碼結尾處追加英文分號「;」做爲本行結束。函數
下面進入咱們的main函數,這裏是main包的主入口函數,在咱們啓動Go語言編寫的一個二進制程序時程序會根據main函數進行程序執行,這裏須要講一下,每一個go文件中還有一個init函數,這個函數是第一個執行的,後續在編寫示例時咱們會講到。工具
func main() { //打印 fmt.Println("Hello World") /*搭建一個http服務,實現基礎打印*/ //指定當前目錄爲根目錄 http.Handle("/", http.FileServer(http.Dir("."))) http.HandleFunc("/hello", helloWorld) //使用端口8080做爲服務監控端口 http.ListenAndServe(":8080", nil) }
每一個函數使用 func 關鍵詞來聲明當前是一個函數,mian是函數名,()是參數,{}中的內容是函數體。
函數命名時須要注意,若是首字母是大寫,則它是一個公共函數,即他人均可以使用,若是是一個小寫,則表示是一個私有函數,只能在本包中使用。
上面函數體中咱們能夠看到fmt.Println("Hello World")做爲打印語句,使用了fmt包中的Println函數,參數是"Hello World",首先咱們上面引入了fmt包,這裏在使用時就須要fmt開頭,讓程序知道咱們要使用這個包了,Println函數的P首字母是大寫,所以咱們這裏能夠直接使用到這個函數,而查看源碼得知,參數能夠任意多個,咱們這裏傳入了一個參數,執行後,控制檯打印了Hello World。
這時有小夥伴問了,我不想用fmt開頭怎麼辦?
Go語言已經設計好了,若是咱們使用其餘名字時只須要在引入包時起一個別名便可學習
import aa "fmt"
這裏咱們就可使用aa.Println("Hello World")做爲打印語句
注意:在go語言中嚴格要求了import的導入行爲,若是咱們在go文件中沒有使用到的包被導入了,默認是會報錯的,所以咱們仍是使用什麼導入什麼吧,別貪圖一時方便各類導入。開發工具
在包的導入這裏還有不少其餘的使用方式,咱們會再後續的代碼編寫過程當中逐漸進行使用,具體使用時再作詳細講解。google
本次基礎結構解析咱們先講到這裏,下一篇咱們會講解在Go語言中的數據類型都有哪些。操作系統
知識共享許可協議
本做品由 cn華少 採用 知識共享署名-非商業性使用 4.0 國際許可協議 進行許可。