【笔记】学到几个 golang 代码小技巧
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!
从这篇文章学到:10个令人惊叹的Go语言技巧,让你的代码更加优雅
myfunc()()
这样的函数调用
假设调用一个函数写成myfunc()()
,第一反应是“会编译错误吧?”
只要第一层函数返回的值是一个函数就行:
func myfunc() func(){
return func(){
fmt.Println("xxx")
}
}
Go 1.20 允许将切片解析为数组或数组指针
// Go 1.20
func Test(t *testing.T) {
a := []int{0, 1, 2, 3, 4, 5}
b := [3]int(a[0:3])
fmt.Println(b) // [0 1 2]
}
Go 1.20 允许将多个错误合并为单个错误
var (
err1 = errors.New("Error 1st")
err2 = errors.New("Error 2nd")
)
func main() {
err := err1
err = errors.Join(err, err2)
fmt.Println(errors.Is(err, err1)) // true
fmt.Println(errors.Is(err, err2)) // true
}
特定的场景下,能够让错误处理更优雅一些。