摘要:
1.闭包导致的内存泄漏,在内部函数中使用外部函数的值,导致该变量由栈空间逃逸到堆空间 2.子字符串导致: var s0 string// package-level变量 func f(s string){ s0 = s[:50] // s0与s共享相同的底层内存块。 // 虽然s现在不是活动的,但是 阅读全文
摘要:
用bit位来构建集合,查找插入重复数据效率都非常高。 type IntSet struct { words []uint64 } // Has reports whether the set contains the non-negative value x. func (s *IntSet) Ha 阅读全文
摘要:
有很多种方法来声明 errors: errors.New 声明简单的静态字符串错误信息 fmt.Errorf 声明格式化的字符串错误信息 为自定义类型实现 Error() 方法 通过 "pkg/errors".Wrap 包装错误类型 1.如何自定义错误类型? 客户需要检测并处理此错误吗?如果是,那应 阅读全文
摘要:
1.time.Time和time.Duration time.Time可以理解为时间单位,其中包含了一些对时间的处理方法,time.Now()返回就是time.Time类型 在处理时间的瞬时时使用time.Time,在比较、添加或减去时间时使用time.Time中的方法。 Bad Good func 阅读全文
摘要:
var定义,在不赋值会有默认空值 不同类型的空值 int空值是0 string空值是""而不是null或者nil Slice空值是长度为0的Slice而不是nil, map空值是nil, error空值是nil, struct空值是一个“所有成员都是空值”的空Struct而不是nil var 定义切 阅读全文