前言:在使用多个goroutine中遇见panic问题,写了较全面的内置函数使用
目录
func append(slice []Type, elems ...Type) []Type
func cap(v Type) int
func close(c chan<- Type)
func complex(r, i FloatType) ComplexType
func copy(dst, src []Type) int
func delete(m map[Type]Type1, key Type)
func imag(c ComplexType) FloatType
func len(v Type) int
func make(t Type, size ...IntegerType) Type
func new(Type) *Type
func panic(v any)
func print(args ...Type)
func println(args ...Type)
func real(c ComplexType) FloatType
func recover() any
type ComplexType
type FloatType
type IntegerType
type Type
type Type1
type any
type bool
type byte
type comparable
type complex128type complex64
type error
type float32type float64
type inttype int16type int32type int64type int8
type rune
type string
type uinttype uint16type uint32type uint64type uint8type uintptr
追加内置函数将元素追加到切片的末尾。如果它具有足够的容量,则会重新划分目标以容纳新元素。否则,将分配一个新的基础数组。追加返回更新的切片。因此,有必要存储追加的结果,通常存储在保存切片本身的变量中。
cap 内置函数根据其类型返回 v 的容量。
close 内置函数关闭通道,该通道必须是双向的或仅发送的。它应该仅由发送方执行,而不是接收方执行,并且具有在收到最后一个发送值后关闭通道的效果。从闭合通道 c 接收到最后一个值后,来自 c 的任何接收都将成功而不会阻塞,从而返回通道元素的零值。
package main
import (
"fmt"
)
func main() {
const (
str1 = 's'
str2 = 't'
)
ch := make(chan int, 5)
send := make(chan int, 2)
a := append([]byte("hello"), str1, str2)
b := append([]byte(" world"), " golang"...)
send <- 2
close(send)
fmt.Println(string(a), string(b), cap(ch), <-send)
}
终端输出:
hellost world golang 5 2
复杂内置函数从两个浮点值构造一个复杂值。实部和虚部必须具有相同的大小,可以是 float32 或 float64(或可分配给它们),并且返回值将是相应的复杂类型(对于 float32 为 complex64,对于 float64 为 complex128)
复制内置函数将元素从源切片复制到目标切片。(作为特殊情况,它还会将字节从字符串复制到字节片。源和目标可能重叠。Copy 返回复制的元素数,这将是 len(src) 和 len(dst) 的最小值
delete 内置函数从映射中删除具有指定键 (m[key]) 的元素。如果 m 为 nil 或没有此类元素,则 delete 为 no-op
package main
import "fmt"
func main() {
a := complex(8, float32(3.2))
s1 := make([]int, 4)
s2