golang-基础-Go语言内置函数
在Go语言中,内置函数是语言本身直接支持、无需导入任何包即可直接使用的函数。这些函数涵盖了内存分配、数据结构操作、错误处理、数学运算、字符串处理等常见任务。以下是Go语言中常见的内置函数分类及详细说明:
1. 基本数据操作
1.1 获取长度和容量
len(x)
返回字符串、数组、切片、映射(map)、通道(channel)或结构体的长度(元素个数)。cap(x)
返回数组、切片或通道的容量(最大容量,仅适用于可扩展的数据结构)。
示例:
s := "Hello"
arr := [3]int{1, 2, 3}
slice := []int{1, 2, 3}
m := map[string]int{"a": 1}
fmt.Println(len(s)) // 输出 5
fmt.Println(cap(slice)) // 输出 3(默认容量)
1.2 复数操作
complex(r, i)
创建复数(r
为实部,i
为虚部)。real(c)
返回复数c
的实部。imag(c)
返回复数c
的虚部。
示例:
c := complex(3, 4) // 3+4i
fmt.Println(real(c)) // 输出 3
fmt.Println(imag(c)) // 输出 4
1.3 最值操作(Go 1.21+)
min(x, y)
返回两个值中的较小值。max(x, y)
返回两个值中的较大值。
示例:
fmt.Println(min(3, 5)) // 输出 3
fmt.Println(max(3, 5)) // 输出 5
2. 内存分配
2.1 new
和 make
new(T)
分配类型T
的零值内存,并返回指针(*T
),适用于基本类型(如int
、struct
)。make(T, size, cap)
用于创建切片(slice)、映射(map)或通道(channel),需要指定类型和初始化参数。
示例:
p := new(int) // 分配 int 类型内存,*p = 0
slice := make([]int, 3) // 创建长度为3的切片,元素为0
m := make(map[string]int) // 创建空映射
3. 错误处理
3.1 panic
和 recover
panic(v)
触发运行时错误,终止当前goroutine的执行。recover()
在defer
函数中捕获panic
错误,恢复程序正常执行。
示例:
func safeDivide(a, b int) {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
if b == 0 {
panic("division by zero")
}
fmt.Println(a / b)
}
safeDivide(4, 0) // 输出: Recovered from panic: division by zero
4. 切片和映射操作
4.1 切片操作
append(slice, elements...)
向切片追加元素,返回新切片。copy(dst, src []T)
将源切片src
的元素复制到目标切片dst
,返回复制的元素个数。clear(slice)
(Go 1.21+) 清空切片元素(元素置为零值,长度归零)。delete(map, key)
从映射中删除指定键的键值对。
示例:
slice := []int{1, 2, 3}
slice = append(slice, 4) // [1,2,3,4]
copySlice := make([]int, 3)
copy(copySlice, slice) // copySlice = [1,2,3]
m := map[string]int{"a": 1}
delete(m, "a") // m 为空
5. 通道(Channel)操作
close(channel)
关闭通道,表示不再发送数据。range channel
遍历通道中的数据,直到通道关闭。
示例:
ch := make(chan int)
go func() {
ch <- 1
ch <- 2
close(ch)
}()
for v := range ch {
fmt.Println(v) // 输出 1, 2
}
6. 其他实用函数
6.1 类型转换
string(v)
将整型、字节切片等转换为字符串。int(v)
、float64(v)
将其他类型转换为整型或浮点型。
示例:
b := []byte{72, 101, 108, 108, 111}
s := string(b) // "Hello"
//在Go语言中,直接对浮点数字面量进行类型转换会触发编译错误,这是Go类型系统的安全机制所致
i := int(3.14)
f := 3.14
i := int(f) // 合法转换,结果为3(截断小数)
6.2 底层打印
print(args...)
低级打印函数(不推荐在生产环境中使用)。println(args...)
低级打印函数,自动添加换行符。
示例:
print("Hello") // 输出 Hello(无换行)
println("World") // 输出 World(带换行)
7. Go 1.21 新增函数
clear(x)
清空切片或映射的元素(切片置零值,映射清空)。min(x, y)
返回两个值中的最小值。max(x, y)
返回两个值中的最大值。
示例:
slice := []int{1, 2, 3}
clear(slice) // slice = [0, 0, 0], len=3
总结
Go语言的内置函数是高效编程的核心工具,涵盖了从基础数据操作到高级并发控制的各个方面。以下是部分关键函数的速查表:
分类 | 函数名 | 功能说明 |
---|---|---|
数据操作 | len , cap | 获取长度/容量 |
复数处理 | complex , real , imag | 创建和操作复数 |
内存分配 | new , make | 分配内存 |
错误处理 | panic , recover | 错误触发与恢复 |
切片操作 | append , copy , clear | 追加、复制、清空切片 |
映射操作 | delete | 删除键值对 |
通道操作 | close | 关闭通道 |
类型转换 | string , int , float64 | 转换类型 |
最值操作 | min , max | 返回最小/最大值(Go 1.21+) |
通过熟练掌握这些内置函数,可以显著提高Go语言开发的效率和代码质量。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 软件从业者Hort
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果