[Go] GO语言实战-使用append函数要重新赋值

使用append函数的时候 , 要把扩展后的新slice重新赋值给原变量名 , 因为当底层数组的空间不足的时候 , 会扩充内存空间 ,内存空间会重新分配

通常我们并不知道append调用是否导致了内存的重新分配,因此我们也不能确认新的slice和原始的slice是否引用的是相同的底层数组空间。同样,我们不能确认在原先的slice上的操作是否会影响到新的slice。因此,通常是将append返回的结果直接赋值给输入的slice变量:

runes = append(runes, r)

gofly客服代码中的使用是:

result := make([]interface{}, 0)
    kefus := models.FindUsers()
    for _, kefu := range kefus {
        if uint(id) == kefu.ID {
            continue
        }

        item := make(map[string]interface{})
        item["name"] = kefu.Name
        item["avator"] = kefu.Avator
        item["status"] = "offline"
        _, ok := ws.KefuList[kefu.Name]
        if ok {
            item["status"] = "online"
        }
        result = append(result, item)
    }
(0)

相关推荐

  • 纯函数

    纯函数是这样一种函数,即相同的输入,永远会得到相同的输出,而且没有任何可观察的副作用. 比如 slice 和 splice,这两个函数的作用并无二致--但是注意,它们各自的方式却大不同,但不管怎么说作 ...

  • Go 面试系列(五) - io.ReadAll 怎样读全部?

    在进行本地 file 文件内容读取,或进行 HTTP 网络接口通信的时候,我们经常使用 io.ReadAll 来读取远程接口返回的 resp.Body,但接口返回数据量有大有小,io.ReadAll ...

  • int make 居然不是关键字?

    这是一个小白问题,有多少人知道 int 不是关键字?make 也不是关键字? 我们知道每种语言都有关键字和保留字的,而 go 以关键字少著称,只有25个 break        default    ...

  • Go 切片传递的隐藏危机

    提出疑问 在Go的源码库或者其他开源项目中,会发现有些函数在需要用到切片入参时,它采用是指向切片类型的指针,而非切片类型.这里未免会产生疑问:切片底层不就是指针指向底层数组数据吗,为何不直接传递切片, ...

  • JavaScript数组的一些方法、数学对象、定时器

    <script>         // sort()方法会按照字符串的先后顺序对数组的每一个数组项目的字符顺序来进行排序的         // 如果数组的某个项目不是字符串, 那么会先把 ...

  • Go 官方 Slice 教程图解版

    via: https://ueokande.github.io/go-slice-tricks/ 作者:ueokande 较早使用 Go 的同学,应该有了解过 container/vector 包,不 ...

  • golang2021数据格式(30)切片容量是怎样增长

    一般都是在向 slice 追加了元素之后,才会引起扩容.追加元素调用的是 append 函数. 先来看看 append 函数的原型: 1 func   append(slice []Type, ele ...

  • [Go] GO语言实战-slice的初始化影响转换成json后的数据结构

    [Go] GO语言实战-slice的初始化影响转换成json后的数据结构

  • R语言实战(第2版)——第2章-2.5处理数据对象的实用函数

    #2.5 处理数据对象的实用函数 length()                 #显示对象中元素/成分的数量 dim()                    #显示某个对象的维度 str()  ...

  • C语言fgetc和fputc函数用法详解(以字符形式读写文件)

    文章来源:http://c.biancheng.net/view/2068.html 在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块).本节介 ...

  • R语言实战——线性回归分析和相关矩阵可视化

    多元回归分析 多元回归分析预测法,是指通过对两个或两个以上的自变量与一个因变量的相关分析,建立预测模型进行预测的方法.当自变量与因变量之间存在线性关系时,称为多元线性回归分析. 多元线性回归的适用条件 ...

  • C语言学习之printf()函数特别注意事项

    https://m.toutiao.com/is/eLAopLB/ 做为C语言程序的输出函数printf()在使用时除了其正常的使用之外,还有特别要注意的地方: 1.在函数里面,基本上只有三种字符,一 ...

  • C语言系列_9:函数指针,函数指针数组和回调函数

    (5)函数指针 A:什么是函数指针 数组指针是指向数组的,函数指针就是指向函数的,也就是函数也是有自己的地址的 这里要注意一点,数组的时候&数组名是数组的地址,数组名是数组首元素的地址. 而函 ...

  • 【C语言系列】fmax()函数的作用

    今天偶然情况下发现我以前写的C源代码有一个函数fmax()比较刺眼,因为感觉有点陌生.太长时间没有去整一点C语言方面的代码了,今天就随手整理了一些,记录了下来.希望对大家有所帮助! 函数:fmax() ...

  • 练习R语言:mk.test()函数实现Mann-kendall趋势检验

    ‍‍ Mann-Kendall趋势检验法是对于一组数据(一般是时间序列数据),识别其一系列趋势的非参数检验方法,例如是否逐年下降或上升趋势,也可以适用周期性趋势. 可以使用R包"trend& ...

  • 【C语言更新】指向函数的指针

    文/Edward   定义一个指向函数的指针 前面我们说了,指针的本质其实就是用来存放地址的变量,将一个对象的地址赋值给指针的过程被称为指向.我们前面已经讲过了指针指向变量,指针指向数组,指针指向字符 ...