Go语言中,有一些内置的类型和函数,不需要导入任何东西就可以使用,包括一些内置函数,初学Go,这些函数花几分钟记一记。
官方参考资料:Package builtin
1. 内置类型
- Constants
- Variables
- type ComplexType
- type FloatType
- type IntegerType
- type Type
- type Type1
- type bool
- type byte
- type complex128
- type complex64
- type error
- type float32
- type float64
- type int
- type int16
- type int32
- type int64
- type int8
- type rune
- type string
- type uint
- type uint16
- type uint32
- type uint64
- type uint8
- type uintptr
byte 类型等价于 uint8 类型。
rune 类型等价于 int32 类型。
其中error类型是一个接口:
type error interface {
Error() string
}
2. 内置函数
func append
往slice切片中追加元素,返回更新后的slice。
func append(slice []Type, elems ...Type) []Type
示例:
slice = append(slice, elem1, elem2) // 追加slice
slice = append(slice, anotherSlice...) // 合并slice
特殊例子:
// 往byte类型的slice中添加string类型
slice = append([]byte("hello "), "world"...)
func cap
根据类型返回容量
func cap(v Type) int
v的类型为以类型下时:
- 数组:返回 v 元素的数量(相当于len(v))
- 数组指针:返回 *v 元素的数量(相当于len(v))
- 切片:可以达到的最大长度;如果 v 是 nil,cap(v) 返回 0
- Channel通道:channel 的 buffer 容量;如果 v 是 nil,cap(v) 返回 0
func close
关闭channel通道。应该在发送端关闭,而不是在接收端,防止阻塞。
func close(c chan<- Type)
以下操作对于关闭的channel会将ok设为false:
x, ok := <-c
func complex
通过两个浮点数创建一个复数。
func complex(r, i FloatType) ComplexType
实部和虚部要大小相同, 比如 float32 或者 float64。返回相对的合成类型;比如对于float32返回complex64, 对于float64返回complex128。
func copy
复制一个切片。返回复制的元素数量。
func copy(dst, src []Type) int
func delete
删除map中指定key的元素。
func delete(m map[Type]Type1, key Type)
如果m是空的或者不存在key对于的元素,delete为空操作。
func real
返回复数的实数部分。
func real(c ComplexType) FloatType
返回值的类型根据原始 c 的数据类型来返回。
func imag
返回复数的虚数部分。
func imag(c ComplexType) FloatType
返回值的类型根据原始 c 的数据类型来返回。
func len
根据类型返回 v 的长度。
func len(v Type) int
v为以下类型时:
- 数组:v 中元素的数量
- 数组指针:*v 中元素的数量(即使 v 是 nil)
- 切片slice 或者 字典map:v 中元素的数量;如果 v 是 nil, len(v) 返回0.
- 字符串:v 中 bytes 的数目
- 通道Channel:channel buffer 队列中的元素数量;如果 v 是 nil, len(v) 返回0.
func make
分配和申明 slice,map,或者 channel 对象。
func make(t Type, size ...IntegerType) Type
类似于 new ,第一个参数是一个类型,而不是一个值。
与 new 不同的是 make 返回的类型与参数相同,而不是一个指针。
具体的取决于要make的对象有所不同:
- Slice:size 参数为 slice 的容量;可以再传一个整形参数定义容量;例如 make([]int, 0, 10) 分配了一个长度为0, 容量为10的切片。
capacity 10 - Map: 可以省略size参数,因为会自动分配小的一个初始化大小。
- Channel: channel 中定义的容量既是定义 channel 的 buffer 缓冲容量。如果设置为 0 或者省略,则通道不缓冲数据。
func new
分配内存。
func new(Type) *Type
第一个参数是一个类型,而不是一个值。返回一个指针。
func panic
在当前的goroutine中停止正常的执行。
func panic(v interface{})
例如当一个函数 F 调用 panic,正常的程序执行会立即终止,除了 defer 的内容会正常执行,然后返回给调用者。如果是 G 调用了 F,G 的正常执行也会被终止然后执行 defer 程序。以此类推,直到当前执行的 gorouting 停止。这时,程序终止并报告错误情况,包括恐慌的参数值。
这个终止序列叫恐慌,可以通过内置函数 recover 来控制恐慌。
func recover
在程序中用来控制恐慌的goroutine。
func recover() interface{}
在 defer 函数中调用recover可以停止恐慌序列从而重启正常的程序执行,并检索调用panic的错误值。
如果在 deferr 函数外调用 recover,不会停止恐慌序列。在这种情况下,要么当goroutine没有恐慌时,要么如果提供给恐慌的参数为零,recover返回nil。 因此,recover的返回值提示该goroutine是否恐慌。
func print
格式化特定的实现方式并将结果写入标准错误。
func print(args ...Type)
对于引导和调试有用,不应该保留在程序中。
func println
类似于 print,但是 println 会在参数中加空格和添加换行符。
func println(args ...Type)
关于print,println 和 fmt.Println的关系参考:
what’s the difference between fmt.Println() and println() in go
0 条评论
来做第一个留言的人吧!