初学 GO 语法很简约

Go

Go

最近在学习 Go 语言,它的语法非常简约。

比如下面的代码:

go func() {
  defer func() {
    if err := recover(); err != nil {
      ro.Logger.Error("asset maintainer error:", err)
    }
  }()
  // 这里是业务逻辑
}

在了解语法后发现他的语法相对于 JS 很简化很多

  1. 第一个就是他甚至连 function 都懒得写全…
  2. 也有类似于 JS 的立即执行函数 func() {…}。
  3. if 并声明+赋值,把两行代码合并成一行了(JS 也可以在 if 中赋值但是不能在 if 中声明)。
  4. err: 就等同于 JS 的 let err = recover()。(这是 let 都懒得写了)。

JS

如果上面的代码在 JS 中 1:1 还原可能是这样的:

;(async () => {
  ;(() => {
    const err = maybeThrow() // 模拟 recover 场景
    if (err) {
      logger.error('asset maintainer error:', err)
    }
  })()
  /// 这里是其他代码逻辑
})()