reflect 反射
反射性能的一般原则
基准测试结果的数值分析的一般原则建议:
- 能使用原生代码时,尽量避免反射操作。
- 提前缓冲反射值对象,对性能有很大的帮助。
- 避免反射函数调用,实在需要调用时,先提前缓冲函数参数列表,并且尽量少地使用返回值。
基准测试结果的数值分析的一般原则建议:
当调用一个函数时,会对其每一个参数值进行拷贝,如果一个函数需要更新一个变量,或者函数的其中一个参数实在太大我们希望能够避免进行这种默认的拷贝,这种情况下我们就需要用到指针了。对应到我们这里用来更新接收器的对象的方法,当这个接受者变量本身比较大时,我们就可以用其指针而不是对象来声明方法,如下:
默认转换规则:
1.布尔型转换为 JSON 后仍是布尔型 , 如true -> true
2.浮点型和整数型转换后为JSON里面的常规数字,如 1.23 -> 1.23
3.字符串将以UTF-8编码转化输出为Unicode字符集的字符串,特殊字符比如<将会被转义为\u003c
| 函数 | 适用范围 | 返回值 | 填充值 |
|---|---|---|---|
| make() | 仅限创建类型(slice map channel) | 引用,make返回复杂的结构为slice时:它是一个包含3个域的结构体:指向slice中第一个元素的指针,slice的长度,以及slice的容量。 | 非零值,make(T, args)返回一个初始化的(而不是置零),类型为T的值(而不是*T)。之所以有所不同,是因为这三个类型的背后引用了使用前必须初始化的数据结构 |
| new() | 所有类型 | 指针,new返回一个指向已清零内存的指针,而make返回一个复杂的结构。 | 零值,new(T)会为T类型的新项目,但new它并不初始化内存,只是将其置零 |