关于 go 文档中-> 《go编程基础(视频)》中->第15课项目与坑,中-> [15:15] slice 与 append 的坑 ,的讲述存在疑问?

1. 运行环境

go 1.17
window 10
//: <> (当前使用的Go版本,及系统版本、系统架构?)
//: <> (使用go version 命令查看,期望的结果如:go 1.12, linux/amd64)

2. 问题描述?

这里面视频中说的 Pingpong 函数中操作 切片,main函数中的切片不受影响的原因是

  1. make的 第二个参数 是 0 ,然后在 append 回重新申请内存地址

Go
但是这个不是因为是值传递的原因么?你传指针不就好了么,跟append make 0 有啥关系?然后复现了一下,将make 调整为 为 1

  1. 发现并没有如视频中所说 影响 main 函数中的值
    Go
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. 您期望得到的结果?

  1. 希望大家指点一下,是我理解的问题,还是文档中的教程的问题
  2. 如果是文档的问题,那。。。。

4. 您实际得到的结果?

希望大家看下,我说的是否正确
//: <> (有报错信息的话把堆栈信息提供出来)

讨论数量: 9

后面看了看,发现他讲的也没啥大问题,就是阐述的不准确,

3年前 评论
zhaocrazy

下次问问题 可以试着把代码 copy 过来 截图别人把你调试 还要打一遍 有些可以截图

3年前 评论
zion_xayts_com (楼主) 3年前
zhaocrazy (作者) 3年前
zhaocrazy (作者) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
ShiKi

说的挺通俗易懂的呀,反正我是听懂了

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!