golang内置函数的使用

本文详细介绍了Golang的内置函数,包括append、cap、close、complex、copy、delete、imag、len、make、new、panic、print、println、real、recover等,以及各种类型定义,特别讨论了在多goroutine环境下如何处理panic问题。
摘要由CSDN通过智能技术生成

前言:在使用多个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


func append(slice []Type, elems ...Type) []Type

        追加内置函数将元素追加到切片的末尾。如果它具有足够的容量,则会重新划分目标以容纳新元素。否则,将分配一个新的基础数组。追加返回更新的切片。因此,有必要存储追加的结果,通常存储在保存切片本身的变量中。


func cap(v Type) int

        cap 内置函数根据其类型返回 v 的容量。


func close(c chan<- Type)

         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


func complex(r, i FloatType) ComplexType

        复杂内置函数从两个浮点值构造一个复杂值。实部和虚部必须具有相同的大小,可以是 float32 或 float64(或可分配给它们),并且返回值将是相应的复杂类型(对于 float32 为 complex64,对于 float64 为 complex128) 


func copy(dst, src []Type) int

        复制内置函数将元素从源切片复制到目标切片。(作为特殊情况,它还会将字节从字符串复制到字节片。源和目标可能重叠。Copy 返回复制的元素数,这将是 len(src) 和 len(dst) 的最小值 


func delete(m map[Type]Type1, key Type)

         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
Golang 中,可以使用内置的 `testing` 包来编写单元测试代码。以下是编写测试函数的步骤: 1. 在需要测试的文件中,创建一个名为 `xxx_test.go` 的文件,其中 `xxx` 表示需要测试的文件名。 2. 在该文件中定义名为 `TestXxx` 的测试函数,其中 `Xxx` 表示需要测试的函数名。 3. 在 `TestXxx` 函数中编写测试代码,使用内置的 `testing` 包中的函数来进行测试断言。 4. 在命令行中使用 `go test` 命令来运行测试代码,并查看测试结果。 下面是一个示例: 假设我们有一个名为 `stringutil` 的 package 包,其中包含了一个名为 `ToUpper` 的函数,用于将字符串转换为大写。我们可以编写一个名为 `stringutil_test.go` 的文件,用于测试该函数的正确性。 ```go package stringutil import "testing" func TestToUpper(t *testing.T) { s := "hello, world!" expected := "HELLO, WORLD!" result := ToUpper(s) if result != expected { t.Errorf("ToUpper(%s) = %s; expected %s", s, result, expected) } } ``` 在上面的示例中,我们定义了一个名为 `TestToUpper` 的测试函数,用于测试 `ToUpper` 函数的正确性。我们使用内置的 `testing` 包中的函数 `t.Errorf` 来进行测试断言,如果测试失败,会输出错误信息。 需要注意的是,测试函数的命名必须以 `Test` 开头,并且参数列表中必须包含一个名为 `*testing.T` 的参数,用于输出测试结果。 在命令行中运行 `go test` 命令,将会自动运行所有的测试函数,并输出测试结果。 总结: 通过编写测试函数,可以确保代码的正确性,避免出现潜在的问题。在实际的开发过程中,建议编写完整的测试代码,以确保代码的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值