柴树杉
柴树杉
```go // go run chai2010.cn/gobook/examples/ch1.1/1-hello package main import "fmt" func main() { fmt.Println("你好, 世界!") } ```
https://github.com/chai2010/advanced-go-programming-book/issues/441
ch3.8 done
如果没有static,os这个全局的名字污染太严重了, 或许用宏会好一点
错误,应该是`1
欢迎PR
C语言最大的限制是全局函数,全局函数要绑定到qsort的数组必须一个额外的指针。 有一些折中的优化:可以定义很多全局的cmp函数,然后分配给不同的数组,这样并发度会大一点。 对于qsort来说,这个函数的接口设计有点缺陷:就是没有为cmp额外携带一个参数。 比如设计为下面这样: ```c void qsort( void* base, size_t num, size_t size, int (*cmp)(const void* a, const void* b, void* ctx), void* cmp_ctx ); ``` 为cmp增加一个ctx参数,就可以避免这个问题。 所以核心问题是qsort在排序不同数组的时候,将它们统一绑定到了固定的全局函数。 全局函数无法动态获取当前排序的数组。
> C语言结构体中位字段对应的成员无法在Go语言中访问,如果需要操作位字段成员,需要通过在C语言中定义辅助函数来完成。对应零长数组的成员,无法在Go语言中直接访问数组的元素,但其中零长的数组成员所在位置的偏移量依然可以通过`unsafe.Offsetof(a.arr)`来访问。 文中是说不支持访问零长数组,因此出现错误是正常的。 而且并不是所有的C编译器都支持零长数组,但是这个问题和Go语言无关了。
必须要启动web服务,不能直接用浏览器打开本地文件