通常, 共享数据结构受锁保护, 线程将争夺这些锁访问数据, 在某些情况下, 通过使用 Python 的 Queue 等线程安全的数据结构可以使这变得更容易....示例可参见 Go 标准库 syscall.
Cgo 必须始终使用构建标签保证 (Cgo must always be guarded with build tags)
基本上原因同上一条....错误也是一种值 (Errors are values)
值可以被编程, 并且由于错误是值, 所以错误可以被编程. Go 官方博客有对此的解读....想象组件的每一个部分并行工作, 为不同的组件起好的名字, 因为这些名字会出现在稿纸上.
拿 Go 程序来说, 如果名字不错, 组件就好理解, 那么程序的结构设计就会清晰, 程序会感觉很自然....不要慌 (Don't panic)
不要使用 panic 进行正常的错误处理. 使用错误 (error) 和多个返回值.