一、reflect 包

  1. 基于反射的代码是比较脆弱的
  1. 反射的操作不能做静态类型检查,而且大量反射的代码通常难以理解
  1. 基于反射的代码通常比正常的代码运行速度慢一到两个数量级

二、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++ 代码