Go:slice
一、切片创建方式
func main() {
// 创建切片方式1
// 让切片引用一个数组
array := [...]int{1, 2, 3, 4}
slice1 := array[1:3]
fmt.Println(slice1) // [2 3]
// 创建切片方式2
// 通过make方式创建切片
var slice2 []int // 这是切片定义,需要让其引用一个数组,或make一下才能使用!!!
slice2 = make([]int, 4)
fmt.Println(slice2) // [0 0 0 0]
var slice3 = make([]int, 4, 8) // 8为容量(cap),可选
fmt.Println(slice3) // [0 0 0 0]
slice4 := make([]string, 4)
fmt.Println(slice4) // [ ]
fmt.Println(cap(slice4)) // 4
// 创建切片方式3
// 定义一个切片,直接就指定具体数组,原理类似make方式
var slice5 = []float64{1.11, 2.22, 3.33}
slice6 := []string{"a", "b"}
fmt.Printf("%.1f\n", slice5) // [1.1 2.2 3.3]
fmt.Println(slice6) // [a b]
}
方式1与方式2的区别:
- 方式1是直接引用数组,这个数组是事先存在的,程序员是可操作的;
- 方式2是通过make来创建切片,make会创建一个数组,而切片就是引用这个数组,这个数组是由切片在底层进行维护,程序员不可操作。
二、切片的添加操作
func main() {
slice := []string{"a", "b"}
fmt.Println(slice) // [a b]
slice = append(slice, "c", "d")
fmt.Println(slice) // [a b c d]
slice = append(slice, slice...)
fmt.Println(slice) // [a b c d a b c d]
}
三、切片的拷贝操作
# 参数的数据类型都是切片
copy(param1, param2)
func main() {
slice1 := []int{1, 2, 3}
slice2 := make([]int, 5)
slice3 := make([]int, 2)
copy(slice2, slice1)
fmt.Println(slice2) // [1 2 3 0 0]
copy(slice3, slice1)
fmt.Println(slice3) // [1 2]
}
四、string与slice关系
string底层是一个byte数组,因此string也可以进行切片操作(这里不演示)。
string是不可变的,因此不能通过 str[0] = 'xx' 方式来修改字符串;如果需要修改字符串,可以先将 string 转成 []byte 或者 []rune 类型,修改后再转回。
func main() {
str := "Hello"
sli := []byte(str)
sli[0] = 'h'
fmt.Println(sli) // [104 101 108 108 111]
str = string(sli)
fmt.Println(str) // hello
// 推荐使用下面方式(支持中文)
s := []rune(str)
s[0] = '吖'
str = string(s)
fmt.Println(str) // 吖ello
}
Go:slice的更多相关文章
- JS截取字符串:slice(),substring()和substr()
var string='abcdefg' 1.slice() string.slice(startLocation [, endLocation]) ps1:2个参数可以为负数,若参数值为负数,则将该 ...
- golang:slice切片
一直对slice切片这个概念理解的不是太透彻,之前学习python的就没搞清楚,不过平时就用python写个工具啥的,也没把这个当回事去花时间解决. 最近使用go开发又遇到这个问题,于是打算彻底把这个 ...
- python函数回顾:slice()
描述 slice() 函数实现切片对象,主要用在切片操作函数里的参数传递. 语法 class slice(stop) class slice(start, stop[, step]) 参数说明: st ...
- 对Array.prototype.slice.call()方法的理解在看别人代码时,发现有这么个写法:[].slice.call(arguments, 0),这到底是什么意思呢?
1.基础 1)slice() 方法可从已有的数组中返回选定的元素. start:必需.规定从何处开始选取.如果是负数,那么它规定从数组尾部开始算起的位置.也就是说,-1 指最后一个元素,-2 指倒数第 ...
- python每日一类(4):slice
class slice(stop)class slice(start, stop[, step]) Return a slice object representing the set of indi ...
- JavaScript 数组操作:slice vs splice
在 JavaScript 中,对于数组的操作有两个很容易混淆的方法 splice, slice ,这里给大家推荐一篇介绍 splice, slice 二者区别的文章. In JavaScript, m ...
- Go基础系列:Go slice详解
slice表示切片(分片),例如对一个数组进行切片,取出数组中的一部分值.在现代编程语言中,slice(切片)几乎成为一种必备特性,它可以从一个数组(列表)中取出任意长度的子数组(列表),为操作数据结 ...
- python定制类(1):__getitem__和slice切片
python定制类(1):__getitem__和slice切片 1.__getitem__的简单用法: 当一个类中定义了__getitem__方法,那么它的实例对象便拥有了通过下标来索引的能力. c ...
- Tensorflow学习笔记(1):tf.slice()函数使用
tensorflow 当中的一个常用函数:Slice() def slice(input_, begin, size, name=None) 函数的功能是根据begin和size指定获取input的部 ...
随机推荐
- MySQL ERROR Got an error reading communication packets
200 ? "200px" : this.width)!important;} --> 介绍 经常会在错误日志中看到这个报错,首先我们可以从show GLOBAL statu ...
- Linux 常用命令十六 文件权限管理
一.ls -l 各段含义 wang@wang:~/workpalce/threading$ ls -l 总用量 drwxrwxr-x wang wang 12月 : a -rw-rw-r-- wang ...
- Six degrees of Kevin Bacon
转自:https://blog.csdn.net/a17865569022/article/details/78766867 Input* Line 1: Two space-separated in ...
- Code:Blocks 中文乱码问题原因分析和解决方法
下面说说修改的地方. 1.修改源文件保存编码在:settings->Editor->gernal settings 看到右边的Encoding group Box了吗?如下图所示: Use ...
- 题解报告:hdu 1398 Square Coins(母函数或dp)
Problem Description People in Silverland use square coins. Not only they have square shapes but also ...
- 题解报告:hdu 2086 A1 = ?
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2086 Problem Description 有如下方程:Ai = (Ai-1 + Ai+1)/2 - ...
- URAL1389. Roadworks(dp)
1389 算个简单的树形DP吧 不知道是不是数据太水 竟然一A了 就是对于当前节点有没有被选中就行选最优 有没有被选中的意思是有没有与它相连的边被选中 #include <iostream> ...
- ES之值类型以及堆和栈
ES的数据类型: 原始类型(值存在栈内存中): Number.String Boolean.undefined.null charAt(index)返回该index所在的字节,charCodeAt(i ...
- 读《实战 GUI 产品的自动化测试》之:第四步,高阶技巧
转自:http://www.ibm.com/developerworks/cn/rational/r-cn-guiautotesting4/ 定义测试控件库 本系列前几篇文章对 IBM 框架做了介绍, ...
- 什么是BDD?
BDD是TDD的一种衍生,通过特定的BDD框架,用自然语言或类自然语言,按照编写用户故事或者用户用例的方式,以功能使用者的视角,描述并编写测试用例. BDD源于TDD并优于测试驱动开发. 之所以说BD ...