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