小对象要合并

函数频繁创建的简单的对象,直接返回对象,效果比返回指针效果要好

类型转换要注意,官方用法消耗特别大。

package string_util

import (
  "unsafe"
)

func str2bytes(s string) []byte {
  x := (*[2]uintptr)(unsafe.Pointer(&s))
  h := [3]uintptr{x[0], x[1], x[1]}
  return *(*[]byte)(unsafe.Pointer(&h))
}

func bytes2str(b []byte) string {
  return *(*string)(unsafe.Pointer(&b))
}

避免反复创建slice,map

func(r*Reader)Read()([]byte,error)
// 此函数没有形参,每次调用的时候返回一个[]byte。
func(r*Reader)Read(buf[]byte)(int,error)
// 此函数个函数在每次迪调用的时候,会重用形参声明。

避免使用"+“拼接字符串

package string_utils

import (
  "strings"
)

func strAppend(s string, ss ...string) string {
  var r strings.Builder
  r.WriteString(s)
  for _, v := range ss {
    r.WriteString(v)
  }

  return r.String()
}