Go 学习笔记(十三)- 底层编程

go 隐藏了底层实现细节,不用像c那样直接操作底层,也不用手动回收垃圾,代码更容易预测和理解,程序也不容易崩溃。但有时候为了更好的性能或者go无法实现的操作,就需要挣脱go的这些束缚,直接进行底层编程了。

注: 底层编程属于黑魔法,虽然可能功能很强大,但是也容易误伤到自己。三思而行

unsafe.Sizeof, Alignof 和 Offsetof

  • unsafe.Sizeof 函数返回操作数在内存中的字节大小
  • unsafe.Alignof 函数返回对应参数的类型需要对齐的倍数
  • unsafe.Offsetof 函数的参数必须是一个字段 x.f, 然后返回 f 字段相对于 x 起始地址的偏移量, 包括可能的空洞.

具体就不详细研究了,反正也用不到那么细,大致过一遍就好了。

unsafe.Pointer

unsafe.Pointer 是特别定义的一种指针类型(译注:类似C语言中的void*类型的指针),它可以包含任意类型变量的地址。

通过cgo调用C代码

使用了一个Go语言自带的叫cgo的用于支援C语言函数调用的工具。

小结

这是最后一章了,虽然没看懂,但大概就是可以直接底层或者调用c开发,甚至是之前提到的汇编。
我想这章我基本上是用不到的,因为不会折腾的这么底层。

最后,用 Go 快乐地编程吧。