// Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. /* builtin包爲Go的預先聲明的標識符提供了文檔 */ package builtin // bool 是布爾值的集合,true 和 false type bool bool // true 和 false 是兩個無類型的布爾值 const ( true = 0 == 0 // Untyped bool. false = 0 != 0 // Untyped bool. ) // uint8 是全部 8 位無符號整型的集合 // 範圍: 0 ~ 255. type uint8 uint8 // uint16 是全部 16 位無符號整型的集合 // 範圍: 0 ~ 65535. type uint16 uint16 // uint32 是全部 32 位無符號整型的集合 // 範圍: 0 ~ 4294967295. type uint32 uint32 // uint64 是全部 64 位無符號整型的集合 // 範圍: 0 ~ 18446744073709551615. type uint64 uint64 // int8 是全部 8 位有符號整型的集合 // Range: -128 through 127. type int8 int8 // int16 是全部 16 位有符號整型的集合 // 範圍: -32768 ~ 32767. type int16 int16 // int32 是全部 32 位有符號整型的集合 // 範圍: -2147483648 ~ 2147483647. type int32 int32 // int64 是全部 64 位有有符號整型的集合 // 範圍: -9223372036854775808 ~ 9223372036854775807. type int64 int64 // float32 是全部 32 位浮點數的集合 type float32 float32 // float64 是全部 64 位浮點數的集合 type float64 float64 // complex64 是具備 float32 實部和虛部的全部複數的集合 type complex64 complex64 // complex128 是具備 float64 實部和虛部的全部複數的集合 type complex128 complex128 // string 是全部 8 位字節字符串的集合,一般但不必定表明 UTF-8 編碼的文本。 字符串類型的值是不可變的。 type string string // int 是大小至少爲 32 位的有符號整數類型 type int int // uint 是大小至少爲 32 位的無符號整數類型。 可是,它是一種獨特的類型,而不是 uint32 等的別名 type uint uint // uintptr 是一個整數類型,它大到足以容納任何指針的位模式 type uintptr uintptr // byte 是 uint8 的別名,在全部方面都等同於 uint8。 按照慣例,它用於區分字節值和 8 位無符號整數值 type byte = uint8 // rune 是 int32 的別名,在全部方面都等同於 int32。 按照慣例,它用於區分字符值和整數值 type rune = int32 // iota 是一個預先聲明的標識符,表示(一般帶括號的)const 聲明中當前 const 規範的無類型整數序數。 它是零索引的。 const iota = 0 // Untyped int. // nil 是一個預先聲明的標識符,表示指針、通道、函數、接口、映射或切片類型的零值 var nil Type // 類型必須是一個pointer, channel, func, interface, map, or slice type // 此處的類型僅用於文檔目的。 它是任何 Go 類型的替代品,但表明任何給定函數調用的相同類型 type Type int // Type1 僅用於文檔目的。 它是任何 Go 類型的替代品,但表明任何給定函數調用的相同類型。 type Type1 int // IntegerType 僅用於文檔目的。 它是任何整數類型的替代:int、uint、int8 等。 type IntegerType int // FloatType 在這裏僅用於文檔目的。 它是浮點類型的替代:float32 或 float64。 type FloatType float32 // ComplexType 僅用於文檔目的。 它是複雜類型的替代:complex64 或 complex128。 type ComplexType complex64 // append 內置函數將元素附加到切片的末尾。 若是它有足夠的容量,目標將被從新切片以容納新元素。 // 若是沒有,將分配一個新的底層數組。Append 返回更新後的切片。 所以有必要將 append 的結果存儲在保存切片自己的變量中: // slice = append(slice, elem1, elem2) // slice = append(slice, anotherSlice...) // 做爲一種特殊狀況,將字符串附加到字節切片是合法的,以下所示: // slice = append([]byte("hello "), "world"...) func append(slice []Type, elems ...Type) []Type // copy 內置函數將元素從源切片複製到目標切片。 (做爲一種特殊狀況,它還會將字節從字符串複製到字節切片。)源和目標可能重疊。 // Copy 返回複製的元素數,這將是 len(src) 和 len(dst) 中的最小值。 func copy(dst, src []Type) int // delete 內置函數從映射中刪除具備指定鍵 (m[key]) 的元素。 若是 m 爲 nil 或沒有這樣的元素,則 delete 是空操做 func delete(m map[Type]Type1, key Type) // len 內置函數根據 v 的類型返回 v 的長度: // 數組:v 中元素的數量。 // 指向數組的指針:*v 中的元素數(即便 v 爲零)。 // 切片或映射:v 中元素的數量; 若是 v 爲零,則 len(v) 爲零。 // 字符串:v 中的字節數。 // 通道:通道緩衝區中排隊(未讀)的元素數量; 若是 v 爲零,則 len(v) 爲零。 // 對於某些參數,例如字符串文字或簡單的數組表達式,結果能夠是常量。 func len(v Type) int // cap 內置函數根據其類型返回 v 的容量: // 數組:v 中元素的數量(與 len(v) 相同)。 // 指向數組的指針:*v 中的元素數(與 len(v) 相同)。 // Slice:從新切片時切片所能達到的最大長度; 若是 v 爲nil,則 cap(v) 爲零。 // Channel:通道緩衝容量,以元素爲單位;若是 v 爲nil,則 cap(v) 爲零。 // 對於某些參數,例如簡單的數組表達式,結果能夠是常量 func cap(v Type) int // make 內置函數分配和初始化 slice、map 或 chan(僅限)類型的對象。 // 和 new 同樣,第一個參數是一個類型,而不是一個值。 與 new 不一樣,make 的返回類型與其參數的類型相同,而不是指向它的指針。 // 結果的規範取決於類型: // 切片:大小指定長度。 切片的容量等於其長度。 能夠提供第二個整數參數來指定不一樣的容量; 它必須不小於長度。 // 例如,make([]int, 0, 10) 分配一個大小爲 10 的底層數組,並返回一個由該底層數組支持的長度爲 0 和容量爲 10 的切片。 // // Map:爲空映射分配足夠的空間來容納指定數量的元素。 能夠省略大小,在這種狀況下分配一個小的起始大小。 // 通道:通道的緩衝區被初始化爲指定的緩衝區容量。 若是爲零,或者省略了大小,則通道是無緩衝的。 func make(t Type, size ...IntegerType) Type // new內置函數分配內存。 第一個參數是一個類型,而不是一個值,返回的值是一個指向該類型新分配的零值的指針 func new(Type) *Type // complex 內置函數從兩個浮點值構造一個複數值。 // 實部和虛部的大小必須相同,float32 或 float64(或可分配給它們),返回值將是相應的複數類型(float32 爲 complex64,float64 爲 complex128)。 func complex(r, i FloatType) ComplexType // real 內置函數返回複數 c 的實部。返回值將是與 c 類型對應的浮點類型 func real(c ComplexType) FloatType // imag 內置函數返回複數 c 的虛部。 返回值將是對應於 c 類型的浮點類型 func imag(c ComplexType) FloatType // close 內置函數關閉通道,該通道必須是雙向的或僅發送的。 它應該只由發送方執行,而不是由接收方執行,而且具備在接收到最後發送的值後關閉通道的效果。 // 從關閉的通道 c 接收到最後一個值後,來自 c 的任何接收都將成功而不會阻塞,返回通道元素的零值。 x, ok := <-c 也會將 ok 設置爲關閉通道的 false。 func close(c chan<- Type) // panic 內置函數會中止 currentgoroutine 的正常執行。 // 當函數 F 調用 panic 時,F 的正常執行會當即中止。 // 任何被 F 推遲執行的函數都以正常的方式運行,而後 F 返回給它的調用者。 // 對於調用者 G 來講,F 的調用就像是調用 panic,終止 G 的執行並運行任何延遲函數。 // 這一直持續到全部正在執行的 goroutine 中的函數以相反的順序中止。 // 在此時,程序以非零退出代碼終止。 這終止序列稱爲恐慌,能夠由內置功能恢復。 func panic(v interface{}) // revocer內置函數容許程序管理恐慌 goroutine 的行爲。 // 在延遲函數(但不是它調用的任何函數)內執行恢復調用經過恢復正常執行來中止恐慌序列,並檢索傳遞給恐慌調用的錯誤值。 // 若是在延遲函數以外調用恢復,它不會中止恐慌序列。 // 在這種狀況下,或者當 goroutine 沒有發生恐慌時,或者若是提供給恐慌的參數爲零,則recover 返回零。 // 所以,recover 的返回值會報告 goroutine 是否處於恐慌狀態。 func recover() interface{} // print 內置函數以特定於實現的方式格式化其參數並將結果寫入標準錯誤。Print 對於引導和調試頗有用 func print(args ...Type) // println 內置函數以特定於實現的方式格式化其參數並將結果寫入標準錯誤 // 參數之間老是添加空格並附加換行符。Println 對於引導和調試頗有用 func println(args ...Type) // error 內置接口類型是表示錯誤條件的常規接口,nil 值表示沒有錯誤 type error interface { Error() string }