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语言中的UTF-8实现
Apr 26 Golang
Golang 实现超大文件读取的两种方法
Apr 27 Golang
goland 清除所有的默认设置操作
Apr 28 Golang
golang import自定义包方式
Apr 29 Golang
Golang 如何实现函数的任意类型传参
Apr 29 Golang
go mod 安装依赖 unkown revision问题的解决方案
May 06 Golang
golang 实现时间戳和时间的转化
May 07 Golang
基于Golang 高并发问题的解决方案
May 08 Golang
Golang中异常处理机制详解
Jun 08 Golang
修改并编译golang源码的操作步骤
Jul 25 Golang
golang实现浏览器导出excel文件功能
Mar 25 Golang
Golang 切片(Slice)实现增删改查
Apr 22 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编程每天必学之表单验证
2016/03/01 PHP
php使用正则表达式获取字符串中的URL
2016/12/29 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
使用JS进行目录上传(相当于批量上传)
2010/12/05 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
js友好的时间返回函数
2016/08/24 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
python安装scipy的方法步骤
2019/06/26 Python
Python爬取豆瓣视频信息代码实例
2019/11/16 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技