如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
测试
学习错误处理和测试框架,可以编写简单的单元测试。
Go语言中的错误处理和测试框架主要可以学习以下两方面:
- 错误处理
- Go通过返回错误值来表示错误。
- 可以通过errors.New构造错误对象。
- 使用if err != nil来判断错误。
- 利用errors.Is、Wrap等处理错误栈。
- panic/recover处理异常。
- 测试框架
- testing包提供测试功能。
- 测试文件命名以_test.go结尾。
- 测试函数名前缀为Test。
- 使用testing.T运行测试用例。
- 使用testing.B执行基准测试。
- 使用assert系列方法进行断言。
- 测试覆盖率使用testing/cover。
一个简单的单元测试样例:
<code class="language-go">func TestAdd(t *testing.T) {
total := Add(1, 2)
if total != 3 {
t.Errorf("Add(1, 2) failed")
}
}
</code>
学习利用错误处理和测试可以提高代码质量和可靠性。
并发
学习goroutine和channel的使用,编写简单的并发程序。
Go语言中goroutine和channel主要用于实现Go的并发编程,主要用法如下:
- goroutine
使用go语句可以启动一个goroutine执行函数:
<code class="language-go">go func() {
// 并发执行的函数
}()
</code>
- channel
channel用于goroutine之间的通信和数据传递:
<code class="language-go">ch := make(chan int)
ch <- 10 // 发送数据
x := <- ch // 接收数据
</code>
- 示例
<code class="language-go">func sum(s []int, ch chan int) {
total := 0
for _, v := range s {
total += v
}
ch <- total // 将sum发送到channel
}
func main() {
s := []int{1,2,3}
ch := make(chan int)
go sum(s[:len(s)/2], ch)
go sum(s[len(s)/2:], ch)
x, y := <-ch, <-ch // 从channel接收
println(x + y)
}
</code>
上面示例通过channel实现了两个goroutine之间的数据通信。
熟练掌握goroutine和channel的使用,是Go并发编程的关键。
这周不再更新,后面改变方案,学习gin