# Day 3 : Golang Package 今天複習最基本的Golang程式碼啟動的特性,首先撰寫Hello world,並透過五個小段落來瞭解go程式碼如何啟動。首先在VS Code新增一個main.go檔案,然後輸入以下程式碼 ```go! package main import "fmt" func main() { fmt.Println("Hello, World") } ``` ## 如何執行 在介紹如何執行之前,要先瞭解一些基本的go command | Command | Action | |:----------:|:-------------------------------------------------:| | go build | **編譯**一個以上的go code files | | go run | **編譯並執行**一個以上的go code files | | go fmt | 自動格式化該檔案 | | go install | 編譯並下載該package及與該package依賴的其他package,並安裝到 $GOPATH/bin 或 $GOBIN 目錄下 | | go get | 下載其他開發者所撰寫的package | | go test | 執行該專案有撰寫的測試檔 | 簡單來說,執行的方式有兩種 * 在terminal輸入`go run main.go`,透過執行go指令來執行和編譯我們的go程式碼。 * 先編譯成可執行檔再來執行。在Go語言中可以透過`go build`編譯出跨平台的執行檔案。其所得到的檔案在Windows系統為.exe檔案,在Linux環境中則不會有附檔名。在此我們執行 `go build main.go`,就會得到一個main.exe的檔案,並可以透過./main啟動該執行檔案。 ## Package main? 在Go裡面,package可以看做是個許多程式檔案的集合,就像是一個工作區域,裡面可以有很多go file。唯一的要求是每個go file,都必須在第一行聲明所屬的package是哪個。 那為什麼又要稱為main呢,在Go裡面有兩種packages * Executable 在編譯的時候產生一個**實際可運行的檔案**,就像當我們執行`go build main.go`,就會產生個可以實際執行的exe檔案。而<span style="color:red;"> package main</span> 就是指可執行的檔案。 * Reusable 就像是「libraries」,並不是用來執行的,其裡面會有很多可重複使用的邏輯運算,幫助我們或是他人可以重複使用函式。 包含package main的go file,透過`go build`指令後,該編譯後的檔案main.exe,如果被執行時,main()函式就會自動被執行。而如果命名為其他package名稱,例如package hello(如下),儘管執行`go build`,也不會產生任何可執行檔案。 ```go! package hello import "fmt" func main() { fmt.Println("Hello, World") } ``` ## import fmt ? fmt package可以用來輸出許多不同格式的訊息,就像是JS的console.log和Python的print(),在進行debug非常好用。 在一個Go的開發項目裡,除了最主要的 package main,還會用到許多其他package,像是fmt, io,encoding等等,但在package main裡面是不能使用其他package定義的函式的,如果要使用,就要透過import,讓不同的package可以建立連結。 這裡是go在安裝時的[標準庫](https://pkg.go.dev/std) ## Conclusion 最後的func,就是Day2提到的函式的宣告。因此統整一下,今天這串hello world的程式碼總共依序做了三件事。 1. package declaration 2. import other packages that we need 3. declare function, tell Go to do things ## References 1. https://ithelp.ithome.com.tw/articles/10260277 ###### tags: `About Go`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up