標籤:操作 構建 好的 lob 成功 com 命令列 這不 執行個體
3.3 調試器
應用程式的開發過程中調試是必不可少的一個環節,因此有一個好的調試器是非常重要的,可惜的是,Go 在這方面的發展還不是很完善。目前可用的調試器是 gdb,最新版均以內建在整合式開發環境 LiteIDE 和 GoClipse 中,但是該調試器的調試方式並不靈活且操作難度較大。
如果你不想使用調試器,你可以按照下面的一些有用的方法來達到基本調試的目的:
在合適的位置使用列印語句輸出相關變數的值(print
/println
和 fmt.Print
/fmt.Println
/fmt.Printf
)。
在 fmt.Printf
中使用下面的說明符來列印有關變數的相關資訊:
%+v
列印包括欄位在內的執行個體的完整資訊
%#v
列印包括欄位和限定類型名稱在內的執行個體的完整資訊
%T
列印某個類型的完整說明
使用 panic 語句(第 13.2 節)來擷取棧跟蹤資訊(直到 panic 時所有被調用函數的列表)。
使用關鍵字 defer 來跟蹤代碼執行過程(第 6.4 節)。
摘自:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/03.3.md
在大多數 IDE 中,每次構建程式之前都會自動調用源碼格式化工具 gofmt
並儲存格式化後的源檔案。如果構建成功則不會輸出任何資訊,而當發生編譯時間錯誤時,則會指明源碼中具體第幾行出現了什麼錯誤,如:a declared and not used
。一般情況下,你可以雙擊 IDE 中的錯誤資訊直接跳轉到發生錯誤的那一行。
3.5 格式化代碼
Go Team Dev不想要 Go 語言像許多其它語言那樣總是在為代碼風格而引發無休止的爭論,浪費大量寶貴的開發時間,因此他們製作了一個工具:go fmt
(gofmt
)。這個工具可以將你的原始碼格式化成符合官方統一標準的風格,屬於文法風格層面上的小型重構。遵循統一的代碼風格是 Go 開發中無可撼動的鐵律,因此你必須在編譯或提交版本管理系統之前使用 gofmt
來格式化你的代碼。
儘管這種做法也存在一些爭論,但使用 gofmt
後你不再需要自成一套代碼風格而是和所有人使用相同的規則。這不僅增強了代碼的可讀性,而且在接手外部 Go 項目時,可以更快地瞭解其代碼的含義。此外,大多數開發工具也都內建了這一功能。
Go 對於代碼的縮排層級方面使用 tab 還是空格並沒有強制規定,一個 tab 可以代表 4 個或 8 個空格。在實際開發中,1 個 tab 應該代表 4 個空格,而在本身的例子當中,每個 tab 代表 8 個空格。至於開發工具方面,一般都是直接使用 tab 而不替換成空格。
在命令列輸入 gofmt –w program.go
會格式化該源檔案的代碼然後將格式化後的代碼覆蓋原始內容(如果不加參數 -w
則只會列印格式化後的結果而不重寫檔案);gofmt -w *.go
會格式化並重寫所有 Go 源檔案;gofmt map1
會格式化並重寫 map1 目錄及其子目錄下的所有 Go 源檔案。
gofmt
也可以通過在參數 -r
後面加入用雙引號括起來的替換規則實現代碼的簡單重構,規則的格式:<原始內容> -> <替換內容>
。
執行個體:
gofmt -r ‘(a) -> a‘ –w *.go
上面的代碼會將源檔案中沒有意義的括弧去掉。
gofmt -r ‘a[n:len(a)] -> a[n:]‘ –w *.go
上面的代碼會將源檔案中多餘的 len(a)
去掉。( 譯者註:瞭解切片(slice)之後就明白這為什麼是多餘的了 )
gofmt –r ‘A.Func1(a,b) -> A.Func2(b,a)‘ –w *.go
上面的代碼會將源檔案中合格函數的參數調換位置。
如果想要瞭解有關 gofmt
的更多資訊,請訪問該頁面:http://golang.org/cmd/gofmt/。
摘自:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/03.5.md
go語言筆記——調試還很弱,用gdb來做?可用panic和defer。格式化代碼使用gofmt,貌似我的vim外掛程式是內建