GoExpertProgramming icon indicating copy to clipboard operation
GoExpertProgramming copied to clipboard

[勘误]反馈一个第2章第2.2节的示例运行结果错误

Open ocaraworks opened this issue 3 years ago • 3 comments

问题描述 slice原理一节的2.2示例的运行结果和解释错误。

如何找到这个错误

  • 章节:2.2 题目二
  • 页码:

您认为应该如何? false

图片 如果有可能,尽量提供图片。

其他补充信息

示例的源代码:

package main

import ( "fmt" )

func AddElement(slice []int, e int) []int { return append(slice, e) }

func main() { var slice []int slice = append(slice, 1, 2, 3)

newSlice := AddElement(slice, 4)
fmt.Println(&slice[0] == &newSlice[0])

}

错误原因: 因为AddElement函数内部append重新扩容了,但是它和原来的slice是两个内存地址值。

注:我的golang 1.16.7版本

ocaraworks avatar Dec 21 '21 08:12 ocaraworks

这个错误。请运行核查。

ocaraworks avatar Dec 21 '21 08:12 ocaraworks

题目二? 是这个吗?

下面函数输出什么?
```go
func SliceRise(s []int) {
	s = append(s, 0)
	for i := range s {
		s[i]++
	}
}

func SlicePrint() {
	s1 := []int{1, 2}
	s2 := s1
	s2 = append(s2, 3)
	SliceRise(s1)
	SliceRise(s2)
	fmt.Println(s1, s2)
}

单选:

  • A: [2, 3] [2, 3, 4]
  • B: [1, 2] [1, 2, 3]
  • C: [1, 2] [2, 3, 4]
  • D: [2, 3, 1] [2, 3, 4, 1]

PS: 不知道你看的是第几次印刷的版本,有点对照不上。

RainbowMango avatar Dec 21 '21 09:12 RainbowMango

感谢描述的是这个问题 https://github.com/RainbowMango/GoExpertProgramming/issues/88

RainbowMango avatar Dec 21 '21 09:12 RainbowMango