【笔记】学到几个 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
}

特定的场景下,能够让错误处理更优雅一些。

posted on 2023-11-30 18:49  ahfuzhang  阅读(34)  评论(0编辑  收藏  举报