[Go語言學習筆記] 02 命令原始碼檔案
原始碼檔案的三種類型:
- 命令原始檔:可以直接執行的程式,可以不編譯而使用命令“go run”啟動、執行。
- 庫原始碼檔案
- 測試原始碼檔案
面試題:命令原始碼檔案的用途是什麼,怎樣編寫它?
典型回答:
命令原始碼檔案是程式的執行入口,是每個可獨立執行的程式必須擁有的。
我們可以通過構建或安裝生成與其對應的可執行檔案,後者一般會與該命令原始碼檔案的直接父目錄同名。
典型特徵為檔案宣告屬於main包,並且包含一個無引數、無結果宣告的main函式,例如檔案demo1.go:
1 package main 2 3 import "fmt" 4 5 func main() {6 fmt.Println("Hello, world!") 7 }
擴充套件知識:
1.接受引數:
[1]匯入flag包,這是Go 語言標準庫中專門用於接收和解析命令引數的包。
[2]設定命令引數
接受 4 個引數。
第 1 個引數是用於儲存該命令引數的值的地址,具體到這裡就是在前面宣告的變數name的地址了,由表示式&name表示。
第 2 個引數是為了指定該命令引數的名稱,這裡是name.
第 3 個引數是為了指定在未追加該命令引數時的預設值,這裡是everyone
第 4 個函式引數,即是該命令引數的簡短說明了,這在列印命令說明時會用到
2.命令原始碼檔案傳入引數,檢視說明
2.1. go run demo2.go -name="Robert"
2.2. go run demo2.go --help
3. 自定義命令原始碼檔案的引數使用說明
flag.Usage
4. flag.CommandLine重新賦值
我們在呼叫flag包中的一些函式(比如StringVar、Parse等等)的時候,實際上是在呼叫flag.CommandLine變數的對應方法。
思考題:
Q1:預設情況下,我們可以讓命令原始碼檔案接受哪些型別的引數值?
A1:int(int|int64|uint|uint64),
float(float|float64)
string,
bool,
duration(時間),
var(自定義)
Q2:我們可以把自定義的資料型別作為引數值的型別嗎?如果可以,怎樣做?
A2:關鍵就是使用flag.var(),關鍵點在於需要實現flag包的Value介面。
本學習筆記是僅為了總結自己學到的Go語言核心知識,方便以後回憶,文中部分內容摘錄自極客時間的《Go語言核心36講》專欄,如有侵權,請聯絡我刪除。
本學習筆記是僅為了總結自己學到的Go語言核心知識,方便以後回憶,文中部分內容摘錄自極客時間的《Go語言核心36講》專欄,如有侵權,請聯絡我刪除。