advanced-go-programming-book icon indicating copy to clipboard operation
advanced-go-programming-book copied to clipboard

:books: 《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框架实现、分布式系统等高阶主题(完稿)

Results 70 advanced-go-programming-book issues
Sort by recently updated
recently updated
newest added

提示:哪一章节的问题,建议如何修改 2.11 节中 , “为何要话费巨大的精力学习CGO是一个问题。“ 笔误,应该为花费。

直接通过指针做强制类型转化,那么指定的 ```数组``` 大小不应该超过原先的 ```数组``` 大小,否则会出现访问到意外的数据。

基于新的客户端接口,我们可以简化客户端用户的代码: ```go func main() { client, err := DialHelloService("tcp", "localhost:1234") if err != nil { log.Fatal("dialing:", err) } var reply string err = client.Hello("hello", &reply) if err != nil {...

``` var a string var done bool func setup() { a = "hello, world" done = true } func main() { go setup() for !done {} print(a) } ``` >...

原文中描述如下: ```markdown int* getGoPtr() { __SIZE_TYPE__ _cgo_ctxt = _cgo_wait_runtime_init_done(); struct { int* r0; } __attribute__((__packed__)) a; _cgo_tsan_release(); crosscall2(_cgoexp_95d42b8e6230_getGoPtr, &a, 8, _cgo_ctxt); _cgo_tsan_acquire(); _cgo_release_context(_cgo_ctxt); return a.r0; } 其中 `_cgo_tsan_acquire` 是从 LLVM...

`pseudo SP` 的值应该是`parent return address`处,不应该和`BP`的值相同?

Go version: ``` go version go1.22.1 linux/amd64 ``` - 使用go代码实现: ``` package main //go:noinline func add(a, b uint64) uint64 { return a + b } func main() { _ =...

修改 pubsub 导入地址,pubsub 已经从 moby的项目中独立出来成为一个单独的项目

提示 makeABIWrapper support for wrapping methods not implemented go 版本 1.23.6

有点不理解 [2.7.2](https://github.com/chai2010/advanced-go-programming-book/blob/master/ch2-cgo/ch2-07-memory.md#272-c-%E4%B8%B4%E6%97%B6%E8%AE%BF%E9%97%AE%E4%BC%A0%E5%85%A5%E7%9A%84-go-%E5%86%85%E5%AD%98) 中的这部分 > 任何完美的技术都有被滥用的时候,CGO 的这种看似完美的规则也是存在隐患的。我们假设调用的 C 语言函数需要长时间运行,那么将会导致被他引用的 Go 语言内存在 C 语言返回前不能被移动,从而可能间接地导致这个 Go 内存栈对应的 goroutine 不能动态伸缩栈内存,也就是可能导致这个 goroutine 被阻塞。因此,在需要长时间运行的 C 语言函数(特别是在纯 CPU 运算之外,还可能因为需要等待其它的资源而需要不确定时间才能完成的函数),需要谨慎处理传入的 Go 语言内存。 Goroutine 在调用 C 函数的过程(即使不 pin 内存)中本身不是阻塞的吗,...