Go语言基础切片的创建及初始化示例详解


Posted in Golang onNovember 17, 2021

概述

切片是一种动态数组

按需自动改变大小

与数组相比,切片的长度可以在运行时修改

语法

一、创建和初始化切片

make

使用内置函数make()创建切片:

var slice []type = make([]type, len, cap) 
//简写: slice := make([]type, len, cap)

字面量

var 变量名 []type

slice1:=[]string{"张三","李四"}  // 长度和容量都是5个元素的字符串切片
slice2 := []int{10, 20, 30} // 长度和容量都是3个元素的整型切片

二、使用切片

赋值和切片

使用[]操作符就可以改变某个元素的,实例如下:

// 创建一个整型切片
// 其容量和长度都是5个元素
slice1:=[]string{"张三","李四","王五","马六","老七"}
// 改变索引为1的元素的值
slice1[1] = "小张三"

使用切片创建切片

// 创建一个整型切片
// 其长度和容量都是5个元素
slice1:=[]string{"张三","李四","王五","马六","老七"}
// 创建一个新切片
// 其长度为3个元素,容量为3个元素
newSlice:=slice1[2:5]

切片增长

使用append向切片增加元素,同时增加切片的长度和容量

// 创建一个整型切片
// 其长度和容量都是5个元素
slice1:=[]string{"张三","李四","王五","马六","老七"}
// 使用原有的容量来分配一个新元素
// 将新元素赋值为60
newSlice:=append(slice1,"我是新来的")

遍历切片

使用 for range 迭代切片

slice1 := []string{"张三", "李四", "王五", "马六", "老七"}
for k, v := range slice1 {
	fmt.Println(k, v)
}

使用 for 循环迭代切片

slice1 := []string{"张三", "李四", "王五", "马六", "老七"}
for i := 0; i < len(slice1); i++ {
	fmt.Println(i,slice1[i])
}

总结

  1. slice 的默认开始位置是0,ar[:n]等价于ar[0:n]
  2. slice是引用类型,是一个指向数组的指针
  3. 不能使用 == 来判断两个slice 是给含有全部相同元素
  4. >判断 slice 是否为空,使用 len(s) == 0 , 而不是 s == nil

总示例

package main
import (
	"fmt"
)
func main() {
	//一、创建切片
	var slice []int = make([]int, 3)
	fmt.Println(slice)
	slice1 := []string{"张三", "李四", "王五", "马六", "老七"}
	fmt.Println(slice1)
	slice2 := []int{10, 20, 30}
	fmt.Println(slice2)
	//二、使用切片
	//使用[]操作符就可以改变某个元素
	slice1[1] = "小张三"
	fmt.Println(slice1)
	//使用切片创建切片【下标是从0开始】
	newSlice := slice1[0:2]
	fmt.Println(newSlice)
	//切片增长
	newSlice = append(slice1, "我是新来的")
	fmt.Println(newSlice)
	// 使用 for range 迭代切片【k:表示下标,v表示值】
	for k, v := range slice1 {
		fmt.Println(k, v)
	}	
	// 使用 for 循环迭代切片
	for i := 0; i < len(slice1); i++ {
		fmt.Println(i,slice1[i])
	}
}

示例一  两个slice是否相等

package main
import (
	"fmt"
	"reflect"
)
func main() {
	//两个slice是否相等
	slice1 := []string{"张三", "李四", "王五", "马六"}
	slice2 := []string{"张三", "李四", "王五", "马六"}
	if reflect.DeepEqual(slice1, slice2) {
		fmt.Println("两个slice相等")
	} else {
		fmt.Println("两个slice不相等")
	}
}

示例二 两个数字是否包含

package main
import (
	"fmt"
	"sort"
	"strings"
)
func main() {
	slice1 := []string{"张三", "李四", "王五", "马六", "老七"}
	fmt.Println(slice1)	
	target := "李四"
	i := sort.Search(len(slice1), func(i int) bool {
		return slice1[i] >= target
	})
	if strings.EqualFold(slice1[i], target) {
		fmt.Println(target, "存在,它的下标是", i)
	} else {
		fmt.Println("不存在", target)
	}
}

以上就是Go语言基础切片的创建及初始化示例详解的详细内容,更多关于Go语言切片的资料请关注三水点靠木其它相关文章!

Golang 相关文章推荐
Golang二维切片初始化的实现
Apr 08 Golang
win10下go mod配置方式
Apr 25 Golang
golang http使用踩过的坑与填坑指南
Apr 27 Golang
golang import自定义包方式
Apr 29 Golang
浅谈Go语言多态的实现与interface使用
Jun 16 Golang
golang三种设计模式之简单工厂、方法工厂和抽象工厂
Apr 10 Golang
Go语言的协程上下文的几个方法和用法
Apr 11 Golang
Golang Elasticsearches 批量修改查询及发送MQ
Apr 19 Golang
Golang 链表的学习和使用
Apr 19 Golang
Golang jwt身份认证
Apr 20 Golang
Golang解析JSON对象
Apr 30 Golang
基于Python实现西西成语接龙小助手
Aug 05 Golang
Go语言基础map用法及示例详解
Nov 17 #Golang
Go语言基础函数基本用法及示例详解
Nov 17 #Golang
golang中的struct操作
Nov 11 #Golang
Go 语言中 20 个占位符的整理
Oct 16 #Golang
Golang中channel的原理解读(推荐)
Oct 16 #Golang
Go语言并发编程 sync.Once
Oct 16 #Golang
Go 通过结构struct实现接口interface的问题
Oct 05 #Golang
You might like
PHP实现货币换算的方法
2014/11/29 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
jQuery 使用手册(四)
2009/09/23 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
2015/09/16 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
python实现红包裂变算法
2016/02/16 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
TensorFlow实现Logistic回归
2018/09/07 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
Python用字典构建多级菜单功能
2019/07/11 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
详解Python中第三方库Faker
2020/09/25 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
美国在线和移动免费会员制批发零售商:Boxed(移动端的Costco)
2020/01/02 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
自行车租赁公司创业计划书
2014/01/28 职场文书
趣味游戏活动方案
2014/02/07 职场文书
电子商务专业应届生求职信
2014/05/28 职场文书
优秀家长自荐材料
2014/08/26 职场文书
周一问候语大全
2015/11/10 职场文书
Python面向对象编程之类的概念
2021/11/01 Python