golang: 学会几个语法上的新写法

看了VictoriaMetrics,学会了几个新写法,记录下来:

1. 数组拷贝

以前:

arr := make([]byte, 0, len(oldArr)
arr = append(arr, oldArr...)

现在:

arr := append([]byte{}, oldArr...)

2.interface{}类型断言

以前:

func converToMyType(interfaceType interface{}) *MyType{
    var inst *MyType
    var ok bool
    inst,ok = interfaceType.(*MyType)
    if !ok{
        inst = &MyType{}
    }
    return inst
}

现在:

func converToMyType(interfaceType interface{}) *MyType{
    if _,ok:=interfaceType.(*MyType);!ok{
        interfaceType = &MyType{}
    }
    return interfaceType.(*MyType)
}

3.数组初始化

var (
   int64Zeros [8 * 1024]int64
   int64Ones  = func() (a [8 * 1024]int64) {
      for i := 0; i < len(a); i++ {
         a[i] = 1
      }
      return a
   }()
)

posted on 2022-01-28 19:32  ahfuzhang  阅读(111)  评论(0)    收藏  举报