关于 go 文档中-> 《go编程基础(视频)》中->第15课项目与坑,中-> [15:15] slice 与 append 的坑 ,的讲述存在疑问?
1. 运行环境
go 1.17
window 10
//: <> (当前使用的Go
版本,及系统版本、系统架构?)
//: <> (使用go version
命令查看,期望的结果如:go 1.12, linux/amd64
)
2. 问题描述?
这里面视频中说的 Pingpong 函数中操作 切片,main函数中的切片不受影响的原因是
- make的 第二个参数 是 0 ,然后在 append 回重新申请内存地址
但是这个不是因为是值传递的原因么?你传指针不就好了么,跟append make 0 有啥关系?然后复现了一下,将make 调整为 为 1
- 发现并没有如视频中所说 影响 main 函数中的值
package main
import "fmt"
func main() {
s := make([]int,1)
fmt.Println(s)
Ping(s)
fmt.Println(s)
}
func Ping(s []int) {
s = append(s ,3)
}
3. 您期望得到的结果?
- 希望大家指点一下,是我理解的问题,还是文档中的教程的问题
- 如果是文档的问题,那。。。。
4. 您实际得到的结果?
希望大家看下,我说的是否正确
//: <> (有报错信息的话把堆栈信息提供出来)
后面看了看,发现他讲的也没啥大问题,就是阐述的不准确,
下次问问题 可以试着把代码 copy 过来 截图别人把你调试 还要打一遍 有些可以截图
说的挺通俗易懂的呀,反正我是听懂了