New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[勘误]反馈一个第一章第二节中关于slice扩容问题 #88
Comments
谢谢提醒,1.16的变化我还没来得及看。 |
@xs-cw 请问你是看的1.16源码吗?扫了一遍 1.16 release notes 没看到相关说明。 |
@RainbowMango 源码里有体现的,github上地址 |
关于下面函数的描述,正确的是?
func SliceExtend() {
- var slice []int
- s1 := append(slice, 1, 2, 3)
+ s := make([]int, 0, 10)
+ s1 := append(s, 1, 2, 3)
s2 := append(s1, 4)
fmt.Println(&s1[0] == &s2[0])
}
单选:
-- A: 函数操作nil切片会panic
+- A: append函数在操作切片s和s1时发生了扩容
- B: 编译错误,不可以对切片元素取址
- C: 函数输出 true
- D: 函数输出 false |
修订将提供给出版社,不出意外会在第4次印刷地修订。欢迎继续指正。 |
@xs-cw 又仔细看了你列出的这个改动。 它解释不了下面的代码行为:
上面代码在Go1.15中返回 |
应该是1.16的 |
问题描述
文中描述是基于go1.16之前版本扩容规则,1.16后扩容规则有所变动。题目举例已经不符合预期了。
如何找到这个错误
常见数据结构实现原理
中slice篇您认为应该如何?
图片
如果有可能,尽量提供图片。
其他补充信息
The text was updated successfully, but these errors were encountered: