go語言筆記——append是內建的函數!!!new是一個函數!!!調試可以使用閉包,本質上是print調試,尼瑪!

來源:互聯網
上載者:User

標籤:tps   bsp   錯誤處理   http   初始化   切片   功能   複製   make   

內建函數

Go 語言擁有一些不需要進行匯入操作就可以使用的內建函數。它們有時可以針對不同的類型進行操作,例如:len、cap 和 append,或必須用於系統級的操作,例如:panic。因此,它們需要直接獲得編譯器的支援。

以下是一個簡單的列表,我們會在後面的章節中對它們進行逐個深入的講解。

名稱 說明
close 用於管道通訊
len、cap len 用於返回某個類型的長度或數量(字串、數組、切片、map 和管道);cap 是容量的意思,用於返回某個類型的最大容量(只能用於切片和 map)
new、make new 和 make 均是用於分配記憶體:new 用於實值型別和使用者定義的類型,如自訂結構,make 用於內建參考型別(切片、map 和管道)。它們的用法就像是函數,但是將類型作為參數:new(type)、make(type)。new(T) 配置類型 T 的零值並返回其地址,也就是指向類型 T 的指標(詳見第 10.1 節)。它也可以被用於基本類型:v := new(int)。make(T) 傳回型別 T 的初始化之後的值,因此它比 new 進行更多的工作(詳見第 7.2.3/4 節、第 8.1.1 節和第 14.2.1 節)new() 是一個函數,不要忘記它的括弧
copy、append 用於複製和串連切片
panic、recover 兩者均用於錯誤處理機制
print、println 底層列印函數(詳見第 4.2 節),在部署環境中建議使用 fmt 包
complex、real imag 用於建立和操作複數(詳見第 4.5.2.2 節)

 

6.10 使用閉包調試

當您在分析和調試複雜的程式時,無數個函數在不同的代碼檔案中相互調用,如果這時候能夠準確地知道哪個檔案中的具體哪個函數正在執行,對於調試是十分有協助的。您可以使用 runtime 或 log 包中的特殊函數來實現這樣的功能。包 runtime 中的函數 Caller() 提供了相應的資訊,因此可以在需要的時候實現一個 where() 閉包函數來列印函數執行的位置:

where := func() {_, file, line, _ := runtime.Caller(1)log.Printf("%s:%d", file, line)}where()// some codewhere()// some more codewhere()

您也可以設定 log 包中的 flag 參數來實現:

log.SetFlags(log.Llongfile)log.Print("")

或使用一個更加簡短版本的 where 函數:

var where = log.Printfunc func1() {where()... some codewhere()... some codewhere()}

計算函數執行時間

有時候,能夠知道一個計算執行消耗的時間是非常有意義的,尤其是在對比和基準測試中。最簡單的一個辦法就是在計算開始之前設定一個起始時候,再由計算結束時的結束時間,最後取出它們的差值,就是這個計算所消耗的時間。想要實現這樣的做法,可以使用 time 包中的 Now() 和 Sub 函數:

start := time.Now()longCalculation()end := time.Now()delta := end.Sub(start)fmt.Printf("longCalculation took this amount of time: %s\n", delta)

摘自:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.10.md

go語言筆記——append是內建的函數!!!new是一個函數!!!調試可以使用閉包,本質上是print調試,尼瑪!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.