go語言常用內置函數


 

close

func close(c chan<- Type)

close用於關閉一個channel,使用close函數要注意以下幾點:

  • 關閉一個只接受的channel會導致錯誤
  • 在一個已經關閉的channel上發送數據會導致panic
  • 關閉一個nil channel會導致panic
  • 在一個channel關閉之后,如果channel已經沒有剩余數據等待接受了,這時候如果繼續接收,會返回一個channel對應數據類型的nil value,如果接收的時候使用多返回值,第二個參數表示一個channel是否已經關閉。

 

len、cap

len:獲取容器已存儲的元素個數,不是容器的容量。

func len(v Type) int

cap:獲取容器的最大存儲元素的容量。

func cap(v Type) int

len和cap都接收多種類型的參數,返回值是int類型,具體接收哪些類型的參數以及返回的值的含義見下表

len,cap的返回值滿足如下條件:

  • 0<=len(s)<=cap(s)
  • slice,map,channel的nil值的len為0
  • slice,channel的nil值的cap為0

 

append

append函數可以為切片動態添加元素,然后返回新的切片變量。

func append(slice []Type, elems ...Type) []type

slice為需要追加的源切片,elems為可變參數列表,返回值為追加后的切片。
在調用此函數時,通常需要以slice接收追加后的返回切片,否則slice仍為追加前的數據。

實例:

var a []int
a = append(a, 1) // 追加1個元素
a = append(a, 1, 2, 3) // 追加多個元素, 手寫解包方式
a = append(a, []int{1,2,3}...) // 追加一個切片, 切片需要解包

不過需要注意的是,在使用 append() 函數為切片動態添加元素時,如果空間不足以容納足夠多的元素,切片就會進行“擴容”,此時新切片的長度會發生改變。

 

delete

delete函數用於刪除map中對應key的鍵值對,如果map中不存在該key,則什么也不做

func delete(m map[Type]Type1, key Type)

  

new

new函數用來分配內存,一般是一個參數,參數為類型,它的返回值是一個指向新分配類型的指針,並且內存置為零。

func new(Type) *Type 

new經常用來初始化結構體。

 

make

func make(Type, size IntegerType) Type

內建函數 make 用來為 slice,map 或 chan 類型分配內存和初始化一個對象(注意:只能用在這三種類型上)。
跟 new 相同的是,第一個參數也是一個類型,跟 new 不同的是,make 返回類型的引用而不是指針,而返回值也依賴於具體傳入的類型。

 

  m>=n,且n和m必須是整型且不能為負數。

 

copy

 copy() 可以將一個數組切片復制到另一個數組切片中,如果加入的兩個數組切片不一樣大,就會按照其中較小的那個數組切片的元素個數進行復制。

 srcSlice 為數據來源切片,destSlice 為復制的目標(也就是將 srcSlice 復制到 destSlice),目標切片必須分配過空間且足夠承載復制的元素個數,並且來源和目標的類型必須一致,copy() 函數的返回值表示實際發生復制的元素個數。

copy( destSlice, srcSlice []T) int

實例:

slice1 := []int{1, 2, 3, 4, 5}
slice2 := []int{5, 4, 3}
copy(slice2, slice1) // 只會復制slice1的前3個元素到slice2中
copy(slice1, slice2) // 只會復制slice2的3個元素到slice1的前3個位置

  

complex

complex 用於創建一個復數並返回。

func complex(r,i FloatType) ComplexType

參數列表中r 為復數的實部,i 表示為復數的虛部。

real

func real(c ComplexType) FloatType

real函數用於獲取一個復數的實部。

imag

func imag(c ComplexType) FloatType

imag函數用於獲取一個復數的虛部。

panic

func panic(v interface{})

panic 表示進程內的錯誤。panic 的原因來自於代碼的邏輯 bug,比如強制類型轉換失敗,比如數組越界。這個代表了程序員的責任不到位,導致了程序的panic。
error 代表進程外的錯誤。比如輸入符合預期。比如訪問外部的服務失敗。這些都不是程序員可以設計控制的。這些情況的錯誤處理是業務邏輯的一部分。

golang中提供panic用於錯誤處理。 

panic,直譯為運行時恐慌,當panic被拋出異常后,如果我們沒有在程序中添加任何保護措施的話,程序就會打印出panic的詳細情況之后,終止運行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM