Go内置函数
Go 语言内置函数(built-in functions)是 Go 语言标准库提供的一组函数,这些函数是语言的一部分,无需显式导入。内置函数在 Go 的各种编程任务中非常实用,包括基本的类型转换、操作、和常见的语言特性。
以下是 Go 的主要内置函数及其参数说明:
1. append
功能:向切片添加元素并返回新的切片。
参数:
s
:切片。elem
:要添加的元素,可以是一个或多个。
返回值:返回包含添加元素的新切片。
示例:
package main
import "fmt"
func main() {
s := []int{1, 2, 3}
s = append(s, 4, 5)
fmt.Println(s) // 输出: [1 2 3 4 5]
}
2. cap
功能:返回切片、数组或通道的容量。
参数:
v
:切片、数组或通道。
返回值:返回容量的整数值。
示例:
package main
import "fmt"
func main() {
s := []int{1, 2, 3}
fmt.Println(cap(s)) // 输出: 3
}
3. close
功能:关闭通道,通知接收方没有更多数据将被发送。
参数:
c
:要关闭的通道。
返回值:无。
示例:
package main
import "fmt"
func main() {
ch := make(chan int)
go func() {
for i := 0; i < 3; i++ {
ch <- i
}
close(ch)
}()
for value := range ch {
fmt.Println(value)
}
}
4. copy
功能:将源切片的元素复制到目标切片中。
参数:
dst
:目标切片。src
:源切片。
返回值:返回实际复制的元素数量。
示例:
package main
import "fmt"
func main() {
src := []int{1, 2, 3}
dst := make([]int, len(src))
n := copy(dst, src)
fmt.Println(dst) // 输出: [1 2 3]
fmt.Println(n) // 输出: 3
}
5. delete
功能:从映射中删除键值对。
参数:
m
:映射。key
:要删除的键。
返回值:无。
示例:
package main
import "fmt"
func main() {
m := map[string]int{"a": 1, "b": 2}
delete(m, "b")
fmt.Println(m) // 输出: map[a:1]
}
6. len
功能:返回切片、数组、映射或字符串的长度。
参数:
v
:切片、数组、映射或字符串。
返回值:返回长度的整数值。
示例:
package main
import "fmt"
func main() {
s := []int{1, 2, 3}
fmt.Println(len(s)) // 输出: 3
m := map[string]int{"a": 1, "b": 2}
fmt.Println(len(m)) // 输出: 2
str := "hello"
fmt.Println(len(str)) // 输出: 5
}
7. make
功能:创建切片、映射或通道,并初始化它们。
参数:
t
:要创建的类型(slice
,map
,channel
)。len
:(对于切片和映射)初始长度。cap
:(对于切片)容量。
返回值:返回新创建的切片、映射或通道。
示例:
package main
import "fmt"
func main() {
// 创建切片
s := make([]int, 3, 5)
fmt.Println(s) // 输出: [0 0 0]
fmt.Println(cap(s)) // 输出: 5
// 创建映射
m := make(map[string]int)
m["a"] = 1
fmt.Println(m) // 输出: map[a:1]
// 创建通道
ch := make(chan int, 2)
ch <- 1
ch <- 2
fmt.Println(<-ch) // 输出: 1
}
8. new
功能:分配内存并初始化为零值,返回指向该内存的指针。
参数:
t
:要创建的类型。
返回值:返回指向新分配内存的指针。
示例:
package main
import "fmt"
func main() {
// 创建 int 类型的零值
p := new(int)
fmt.Println(*p) // 输出: 0
}
9. panic
功能:引发运行时错误,程序将停止执行并调用 defer
中的清理函数。
参数:
v
:要引发的错误值。
返回值:无。
示例:
package main
import "fmt"
func main() {
defer fmt.Println("Defer executed")
panic("Something went wrong")
}
10. recover
功能:从 panic
中恢复,允许程序继续执行。
参数:
- 无。
返回值:返回传递给 panic
的值,如果没有 panic
,返回 nil
。
示例:
package main
import "fmt"
func safeDivision(a, b int) (result int) {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered from panic:", r)
}
}()
if b == 0 {
panic("Division by zero")
}
return a / b
}
func main() {
fmt.Println(safeDivision(10, 2)) // 输出: 5
fmt.Println(safeDivision(10, 0)) // 输出: Recovered from panic: Division by zero
}
总结
append
:向切片添加元素。cap
:返回切片、数组或通道的容量。close
:关闭通道。copy
:将源切片的元素复制到目标切片。delete
:从映射中删除键值对。len
:返回切片、数组、映射或字符串的长度。make
:创建并初始化切片、映射或通道。new
:分配内存并初始化为零值,返回指针。panic
:引发运行时错误。recover
:从panic
中恢复。
这些内置函数提供了强大的功能,帮助 Go 程序员在编写代码时更高效地处理各种任务。