GO
h_hechen
这个作者很懒,什么都没留下…
展开
-
【Go】reflect反射结构体字段与赋值
极少数情况下,我们试图了解当前struct的具体结构和内容,而短时间内难以从代码层面进行分析。此时我们可以用reflect写一段debug代码,反射出当前struct的字段名称,并可以对其进行赋值。以下为搬运示例,并附注释://定义structtype T struct { Age int Name string Children []int}// 初始化测试用例t...原创 2018-03-11 17:51:52 · 7274 阅读 · 0 评论 -
【Go】高效的字符串拼接
在一些业务场景下,我们需要进行大量的字符串拼接操作,如:批量写入数据库时拼接sql语句。此时如果使用 '+' 拼接效率下降严重,因此我们寻求某种高效的字符串拼接方式。直接上结论:1. 少量文本拼接使用 '+' 方便,性能影响不大2. 大量小文本拼接使用 strings.Join()3. 大量大文本拼接使用 bytes.Buffer附:2. strings.Join 使用示例var strs = [...原创 2018-03-11 18:19:31 · 1404 阅读 · 1 评论 -
【Go】defer踩坑指南
我们在Go项目中,经常使用defer来完成日志管理、打点等辅助功能,非常nice,但是有个坑需要注意:1、关于闭包:defer方法原理是编译时先将defer内容堆栈,然后在方法return之前,弹栈并依次执行。因此defer闭包和显示调用会有参数差异。例如:func Test(t *testing.T) { i := 1 defer logs.Error("i=%d", i) i = ...原创 2018-03-30 18:15:21 · 277 阅读 · 0 评论