【Golang源碼閱讀】builtin/builtin.go

// 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
}
相關文章
相關標籤/搜索