Golang 的 reflect 包和 unsafe 包
一、reflect 包
- 基于反射的代码是比较脆弱的
- 反射的操作不能做静态类型检查,而且大量反射的代码通常难以理解
- 基于反射的代码通常比正常的代码运行速度慢一到两个数量级
二、unsafe 包
unsafe 包用于实现比较低层级的包,如 runtime、syscall
三、cgo 编程
在没有 golang 实现的可用工程包时,不得以而使用 c/c++ 实现的库时,使用 cgo 来调用
package main
/*
#include <stdint.h>
static int32_t max(int32_t x, int32_t y) {
return (x > y) ? x : y;
}
*/
import "C"
import "fmt"
func main() {
var x, y int32 = 2, 6
var z int32 = int32(C.max(C.int32_t(x), C.int32_t(y)))
fmt.Println(z) // 6
}
// 注意*: import "C" 要紧跟 c/c++ 代码