小对象要合并#
函数频繁创建的简单的对象,直接返回对象,效果比返回指针效果要好#
类型转换要注意,官方用法消耗特别大。#
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()
}