diff --git a/ch2-cgo/ch2-02-basic.md b/ch2-cgo/ch2-02-basic.md index e37fa73..6aff618 100644 --- a/ch2-cgo/ch2-02-basic.md +++ b/ch2-cgo/ch2-02-basic.md @@ -123,9 +123,9 @@ package main #if defined(CGO_OS_WINDOWS) const char* os = "windows"; #elif defined(CGO_OS_DARWIN) - static const char* os = "darwin"; + const char* os = "darwin"; #elif defined(CGO_OS_LINUX) - static const char* os = "linux"; + const char* os = "linux"; #else # error(unknown os) #endif diff --git a/ch3-asm/ch3-01-basic.md b/ch3-asm/ch3-01-basic.md index 83ae2e6..7b71e37 100644 --- a/ch3-asm/ch3-01-basic.md +++ b/ch3-asm/ch3-01-basic.md @@ -164,7 +164,7 @@ func main() { 不幸的是这次运行产生了以下错误: ``` -pkgpath.NameData: missing Go //type information for global symbol: size 8 +pkgpath.NameData: missing Go type information for global symbol: size 8 ``` 错误提示汇编中定义的NameData符号没有类型信息。其实Go汇编语言中定义的数据并没有所谓的类型,每个符号只不过是对应一块内存而已,因此NameData符号也是没有类型的。但是Go语言是再带垃圾回收器的语言,而Go汇编语言是工作在自动垃圾回收体系框架内的。当Go语言的垃圾回收器在扫描到NameData变量的时候,无法知晓该变量内部是否包含指针,因此就出现了这种错误。错误的根本原因并不是NameData没有类型,而是NameData变量没有标注是否会含有指针信息。