Go:reflect 反射

Go:reflect 反射

reflect 反射

反射性能的一般原则

基准测试结果的数值分析的一般原则建议:

  • 能使用原生代码时,尽量避免反射操作。
  • 提前缓冲反射值对象,对性能有很大的帮助。
  • 避免反射函数调用,实在需要调用时,先提前缓冲函数参数列表,并且尽量少地使用返回值。
Read more
Go:pointer

Go:pointer

pointer 指针

基于指针对象的方法

当调用一个函数时,会对其每一个参数值进行拷贝,如果一个函数需要更新一个变量,或者函数的其中一个参数实在太大我们希望能够避免进行这种默认的拷贝,这种情况下我们就需要用到指针了。对应到我们这里用来更新接收器的对象的方法,当这个接受者变量本身比较大时,我们就可以用其指针而不是对象来声明方法,如下:

Read more
Go:null judge

Go:null judge

null judge

int空值是0,

string空值是””而不是null或者nil(区别

Slice空值是长度为0的

map空值是nil,

error空值是nil,

struct空值是一个“所有成员都是空值”的空Struct而不是nil,

Read more
Go:Map

Go:Map

Map 要点

注意事项

  • map 是引用类型的: 内存用 make 方法来分配。
  • new,永远用 make 来构造 map。new() 分配了一个引用对象,你会获得一个空引用的指针,相当于声明了一个未初始化的变量并且取了它的地址。
  • 当 map 增长到容量上限的时候,如果再增加新的 key-value 对,map 的大小会自动加 1。所以出于性能的考虑,对于大的 map 或者会快速扩张的 map,即使只是大概知道容量,也最好先标明。
Read more
Go:JSON

Go:JSON

JSON

json.Marshal()

默认转换规则:
1.布尔型转换为 JSON 后仍是布尔型 , 如true -> true
2.浮点型和整数型转换后为JSON里面的常规数字,如 1.23 -> 1.23
3.字符串将以UTF-8编码转化输出为Unicode字符集的字符串,特殊字符比如<将会被转义为\u003c

Read more