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 http使用踩过的坑与填坑指南
Apr 27 Golang
golang import自定义包方式
Apr 29 Golang
golang日志包logger的用法详解
May 05 Golang
基于Golang 高并发问题的解决方案
May 08 Golang
golang中的并发和并行
May 08 Golang
go goroutine 怎样进行错误处理
Jul 16 Golang
Go语言实现一个简单的并发聊天室的项目实战
Mar 18 Golang
Go获取两个时区的时间差
Apr 20 Golang
Golang 切片(Slice)实现增删改查
Apr 22 Golang
Go语言入门exec的基本使用
May 20 Golang
详解Go语言中Get/Post请求测试
Jun 01 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
sphinx增量索引的一个问题
2011/06/14 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
PHP new static 和 new self详解
2017/02/19 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
如何在postman测试用例中实现断言过程解析
2020/07/09 Javascript
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
python http基本验证方法
2018/12/26 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
2020/05/18 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
财务会计专业毕业生自荐信
2013/10/02 职场文书
采购经理岗位职责
2014/02/16 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
罚款通知怎么写
2015/04/22 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
python实现三次密码验证的示例
2021/04/29 Python
Python 多线程处理任务实例
2021/11/07 Python