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 相关文章推荐
Go语言操作数据库及其常规操作的示例代码
Apr 21 Golang
golang如何去除多余空白字符(含制表符)
Apr 25 Golang
golang 生成对应的数据表struct定义操作
Apr 28 Golang
go语言中http超时引发的事故解决
Jun 02 Golang
详解Go语言Slice作为函数参数的使用
Jul 02 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
Go语言基础函数基本用法及示例详解
Nov 17 Golang
深入理解go缓存库freecache的使用
Feb 15 Golang
Golang 遍历二叉树
Apr 19 Golang
Golang日志包的使用
Apr 20 Golang
Go获取两个时区的时间差
Apr 20 Golang
Golang 入门 之url 包
May 04 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
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
php自定文件保存session的方法
2014/12/10 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
Python break语句详解
2014/03/11 Python
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
python 删除非空文件夹的实例
2018/04/26 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
美国运动鞋和运动服零售商:Footaction
2017/04/07 全球购物
旅游管理毕业生自荐信
2013/11/05 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL