在 Go 语言中,append 后面的三个点 ... 是展开操作符(spread operator)

基本概念

... 用于将切片展开为独立的元素,传递给函数或 append 函数。

代码:

s4 = append(s4[:2], append([]int{3}, s4[2:]...)...)

分解这个表达式:

s4[2:]... - 将切片 s4[2:] 展开为独立的元素
append([]int{3}, s4[2:]...) - 在 [3] 后面添加 s4[2:] 的所有元素
最外层的 ... - 将内层 append 的结果展开为独立元素

具体例子:

假设 s4 = [1,2,3,4,5]

s4[2:] = [3,4,5]
append([]int{3}, s4[2:]...) = append([3], 3,4,5) = [3,3,4,5]
s4[:2] = [1,2]
append(s4[:2], [3,3,4,5]...) = append([1,2], 3,3,4,5) = [1,2,3,3,4,5]

其他常见用法:

// 合并切片
slice1 := []int{1, 2, 3}
slice2 := []int{4, 5, 6}
combined := append(slice1, slice2...) // [1,2,3,4,5,6] // 传递切片给可变参数函数
func sum(nums ...int) int { /* ... */ }
numbers := []int{1, 2, 3}
result := sum(numbers...) // 展开切片为独立参数

总结: ... 的作用是将切片"打散"成独立的元素,这样 append 就可以接收多个独立的值而不是一个切片。

go学习笔记:s4 = append(s4[:2], append([]int{3}, s4[2:]...)...),append后面三个点是什么意思?的更多相关文章

  1. 《ASP.NET MVC4 WEB编程》学习笔记------Entity Framework的Database First、Model First和Code Only三种开发模式

    作者:张博出处:http://yilin.cnblogs.com Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发 ...

  2. 吴恩达深度学习笔记(deeplearning.ai)之循环神经网络(RNN)(三)

    1. 导读 本节内容介绍普通RNN的弊端,从而引入各种变体RNN,主要讲述GRU与LSTM的工作原理. 事先声明,本人采用ng在课堂上所使用的符号系统,与某些学术文献上的命名有所不同,不过核心思想都是 ...

  3. Python学习笔记.md

    Python学习笔记 1.变量类型 x=5 int x="ss" string x='a' string x=True bool #查看变量类型 type(x) 2.字符串常用操作 ...

  4. Windows phone 8 学习笔记

    Windows phone 8 学习笔记(1) 触控输入  http://www.apkbus.com/android-138547-1-1.html Windows phone 8 学习笔记(2) ...

  5. OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波

    http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...

  6. HTTP 1.1学习笔记

    前言 由于HTTP 1自身的局限性,它不能很好的为用户提供性能良好的WEB服务.于1999年6月正式发布了HTTP1.1标准REC2616,它厘清了之前版本中很多有歧义的地方,而且还新增了很多重要的优 ...

  7. React学习笔记 - 组件&Props

    React Learn Note 4 React学习笔记(四) 标签(空格分隔): React JavaScript 三.组件&Props 组件可以将UI切分成一些独立的.可复用的部件,这样你 ...

  8. iOS学习笔记16-数据库SQLite

    一.数据库 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等.离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式: 归档:NSKeyedArchiver 偏好设置:NSU ...

  9. 《JavaScript DOM 编程艺术》 学习笔记

    目录 <JavaScript DOM 编程艺术> 学习笔记 第一章 js简史 第二章 js语法 准备工作 语法 第三章 DOM DOM中的D DOM中的O DOM中的M 第四章 js图片库 ...

  10. golang 学习笔记 ---make/copy/append

    package main import ( "fmt" ) func main() { a := [...]int{0, 1, 2, 3, 4, 5, 6, 7} s := mak ...

随机推荐

  1. DOS命令——带包的类的编译与运行

    手动版:a.javac编译当前类文件 b.手动建立与包名对应的文件夹                  c.把a步骤中编译出的.class 文件放到b步骤中的最底层文件夹下               ...

  2. .NET外挂系列:6. harmony中一些实用的反射工具包

    一:背景 1. 讲故事 本来想研究一下 IL编织和反向补丁的相关harmony知识,看了下其实这些东西对 .NET高级调试 没什么帮助,所以本篇就来说一些比较实用的反射工具包吧. 二:反射工具包 1. ...

  3. 【洛谷有题】NOI 笔试题库(非初赛)订正

    传送门 第一次做,那个成绩可是一个惨不忍睹-- 我还是想说--我虽然要用Linux,但是不一定要用到指令啊(吧)--编译啥的我可以用Vim|guide啊-- Linux 中为文件改名使用的命令是: m ...

  4. docker pull镜像加速

    配置说明 $ vim /etc/docker/daemon.json { "registry-mirrors": [ "https://ustc-edu-cn.mirro ...

  5. 垃圾PTA:7-3 输出数组元素 (15分)

    本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果. 输入格式: 输入的第一行给出正整数n(1<n≤10).随后一行给出n个整数,其间以空格分隔. 输 ...

  6. Java实现密码、文件MD5加密,密码sha256、sha384、sha512Hex等加密

    SHA512加密(参考:https://blog.csdn.net/zdj_Develop/article/details/89326621?utm_medium=distribute.pc_rele ...

  7. 超实用!SpringAI提示词的4种神级用法

    提示词(Prompt)是输入给大模型(LLM)的文本指令,用于明确地告诉大模型你想要解决的问题或完成的任务,也是大语言模型理解用户需求并生成准确答案的基础.因此 prompt 使用的好坏,直接决定了大 ...

  8. ET6.0运行Demo和工具使用

    环境:Mac + Rider + ET6.0 一:运行Demo 1:下载ET6.0,get:https://github.com/egametang/ET 2:下载.net core 5.0.ET6. ...

  9. 西门子成都工厂的DevSecOps实践

    大家好,我是Edison. 4月15日,成都.NET线下技术沙龙活动中,我分享了一个主题<西门子成都工厂的DevSecOps实践>,向大家介绍了我们为什么要做DevSecOps 以及 我们 ...

  10. C# WinForm 窗体/控件移动

    #region 窗体移动 [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "Re ...