go語言筆記——調試還很弱,用gdb來做?可用panic和defer。格式化代碼使用gofmt,貌似我的vim外掛程式是內建

來源:互聯網
上載者:User

標籤:操作   構建   好的   lob   成功   com   命令列   這不   執行個體   

3.3 調試器

應用程式的開發過程中調試是必不可少的一個環節,因此有一個好的調試器是非常重要的,可惜的是,Go 在這方面的發展還不是很完善。目前可用的調試器是 gdb,最新版均以內建在整合式開發環境 LiteIDE 和 GoClipse 中,但是該調試器的調試方式並不靈活且操作難度較大。

如果你不想使用調試器,你可以按照下面的一些有用的方法來達到基本調試的目的:

  1. 在合適的位置使用列印語句輸出相關變數的值(print/println 和 fmt.Print/fmt.Println/fmt.Printf)。

  2. 在 fmt.Printf 中使用下面的說明符來列印有關變數的相關資訊:

    • %+v 列印包括欄位在內的執行個體的完整資訊
    • %#v 列印包括欄位和限定類型名稱在內的執行個體的完整資訊
    • %T 列印某個類型的完整說明
  3. 使用 panic 語句(第 13.2 節)來擷取棧跟蹤資訊(直到 panic 時所有被調用函數的列表)。

  4. 使用關鍵字 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 fmtgofmt)。這個工具可以將你的原始碼格式化成符合官方統一標準的風格,屬於文法風格層面上的小型重構。遵循統一的代碼風格是 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外掛程式是內建

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.