go-questions icon indicating copy to clipboard operation
go-questions copied to clipboard

📖 Go 程序员面试笔试宝典 | 从问题切入,串连 Go 语言相关的所有知识,融会贯通。 https://golang.design/go-questions

Results 20 go-questions issues
Sort by recently updated
recently updated
newest added

go 源码 sizeclasses.go 文件中 class_to_size 源码内容有更新 Log: https://github.com/golang/go/commit/14c7caae5074fdf0d97a3ad995e20c63e4065cbf

## 问题描述 作者你好,想请问下,关于书中第 201 页以及其他一些函数中会用到一个 get_tls 方法。我能理解汇编可以通过 fs 段找到 m.tls,但是想问下这里为啥不能直接在 m 这个结构体上获取 g 呀?比如在这个 schedinit 函数中,m0 就是和他同一个包的全局变量,直接从它身上把 m0.tls 捞出来再去拿 g,这样会有什么问题么? 另外还想请问下,所谓的把 m 和主线程绑定,我理解本质上就是通过系统调用把 m.tls[1] 的地址存到 fs 段指向的内存,这个的目的除了是可以直接通过汇编的方式以 fs 寄存器找到当前的 m.tls(比如...

原文页码:279页 问题:该页最后一行,关于Go内存问题的Issue是不是贴错了,书中写的是[#43430](https://github.com/golang/go/issues/43430)

## 实际描述 - 原文页码:go-questions/content/channel/7-操作 channel 的情况总结.md - 原文段落: ``` 读、写一个 nil channel 都会被阻塞。 ``` ## 预期描述 ``` 读、写一个 nil channel 未初始化的channel都会导致deadlock。 ``` ## 附图

## 实际描述 - 原文页码: - p290 p291 - 原文段落: 图14-16和图14-7 图14-16的Dijxxxx(C.ref3, C.ref2,ref1)的逗号应该变成点Dijxxxx(C.ref3, C.ref2.ref1) 图14-7的Yuasaxx(A.ref3,B)应该变成Yuasaxx(C.ref3,B) 还有这两幅图和你博客上的出入非常大,你可以仔细对比下,希望尽快纠正

## 问题描述 请在此描述你的问题,提问前请参考[提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md) 原文是这么说的: > myAppend 函数里,虽然改变了 s,但它只是一个值传递,并不会影响外层的 s,因此第一行打印出来的结果仍然是 [1 1 1]。 这个地方我在第一次看到的时候有点歧义,虽说slice是一个值传递,但是slice中是包含是指向数组的指针的。按理说,值传递的也是数组的指针。 经过验证,不影响的准确原因应该是append触发了slice的扩容,扩容会导致copy,也就是说slice结构体中指向数组的指针发生了变化。因此外层的s不会发生变化。 如果是直接修改slice元素,内外层都会改变 ```go func myAppend(s []int) []int { //s = append(s, 100) s[0] = 100 fmt.Printf("s point...

## 实际描述 - 原文页码:P22 - 原文段落:从上至下第三段 ``` 再次向S2追加元素200: `s2 = append(s2, 100)` ``` ## 预期描述 ``` 再次向S2追加元素200: `s2 = append(s2, 200)`这里应该是200不是100 ``` ## 附图 必要时,请附上相关页面的照片或者截图

## 实际描述 - 原文页码:64 - 原文段落:图 4-3 ``` 缓冲区是否有数据? - 是 ... - 否 -> (返回true, true) -> 复制缓冲区元素 ``` ## 预期描述 ``` 缓冲区是否有数据? - 是 -> (返回true, true) ->...

## 实际描述 https://golang.design/go-questions/sched/when/ - 原文页码: - 原文段落: ``` 复制原文段落 ``` ![image](https://user-images.githubusercontent.com/10476131/169644572-f3bfc262-6b13-4d70-b9f5-9b014ae6818a.png) ## 预期描述 还包括 “函数调用”的时候,每个函数头都有一行栈检查代码。会有一个背景程序(来达到抢占式调度的目的)定时污染这个栈limit,导致程序进入runtime, 触发调度 参考 https://www.youtube.com/watch?v=-K11rY57K7k 52:24 function prologue ![image](https://user-images.githubusercontent.com/10476131/169644977-e199566f-68f9-47bd-816f-5e34c92a5581.png) 52:41 spoof stack limit 或者也可以参考 https://golangbyexample.com/goroutines-golang/ ![image](https://user-images.githubusercontent.com/10476131/169645065-44878955-d3a0-44c5-a38e-65c2c6a9e2f2.png) ```...

## 实际描述 B=5时 bucket num 由 hash 的低 5 位决定 - 原文页码:1-map - 原文段落:310-313 行 ``` go // 比如 B=5,那 m 就是31,二进制是全 1 // 求 bucket num 时,将 hash 与...