Go语言基础切片的创建及初始化示例详解
作者:枫少文 发布时间:2024-04-26 17:33:44
标签:Go语言,基础,切片
目录
概述
语法
一、创建和初始化切片
make
字面量
二、使用切片
赋值和切片
切片增长
遍历切片
总结
总示例
示例一 两个slice是否相等
示例二 两个数字是否包含
概述
切片是一种动态数组
按需自动改变大小
与数组相比,切片的长度可以在运行时修改
语法
一、创建和初始化切片
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])
}
总结
slice 的默认开始位置是0,ar[:n]等价于ar[0:n]
slice是引用类型,是一个指向数组的指针
不能使用 == 来判断两个slice 是给含有全部相同元素
>判断 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)
}
}
来源:https://blog.csdn.net/guofeng93/article/details/90934404
0
投稿
猜你喜欢
- ps:大多与c等编程语言极为相似一、if分支if:给定一个条件,同时为该条件设置多种(一般两种)情况,然后通过条件判断来实现具体的执行段复合
- 首先学习两个函数1.substring 返回字符、binary、text 或 image 表达式的一部分。基本语法:SUBSTR
- 迭代器迭代器(iterator)有时又称游标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如链表或阵列)上遍
- 本文实例讲述了Django框架表单操作。分享给大家供大家参考,具体如下:HTML表单是网站交互性的经典方式。 开始学习如何用Django对用
- QSlider 是一个具有可来回拉动手柄的控件。有时使用滑块比输入数字或使用旋转框更方便。在我们的例子中,我们将创建一个滑块和一个标签。标签
- 整理了一下python 中文件的输入输出及主要介绍一些os模块中对文件系统的操作。文件输入输出1、内建函数open(file_name,文件
- 废话不多说了,直接给大家贴代码了。import urllibimport urllib2import cookielibdef getImg
- 本文实例讲述了Python计算斗牛游戏概率算法。分享给大家供大家参考,具体如下:过年回家,都会约上亲朋好友聚聚会,会上经常会打麻将,斗地主,
- 本文实例讲述了python统计日志ip访问数的方法。分享给大家供大家参考。具体如下:import ref=open("/tmp/a
- 简单的并发控制利用 channel 的缓冲设定,我们就可以来实现并发的限制。我们只要在执行并发的同时,往一个带有缓冲的 chann
- 本文实例为大家分享了Python实现简单的2048小游戏的具体代码,供大家参考,具体内容如下运行效果:1.项目结构2.代码configs.p
- 本文实例讲述了PHP实现断点续传乱序合并文件的方法。分享给大家供大家参考,具体如下:分割成多个文件发送,由于网络原因并不上先发就能发接收到。
- 1.查看配置文件: skip-networking #注释掉 因为它是屏蔽掉一切TCP/IP连接 bind-address = 127.0.
- 本文实例为大家分享了python定时发送邮件的具体代码,供大家参考,具体内容如下全部代码如下:import timefrom datetim
- 一、开发环境python 3.6.6opencv-python 4.5.1二、设计要求1、使用opencv-python对人脸口罩进行检测三
- 一. 打印图片属性、设置图片存储路径代码如下:#打印图片的属性、保存图片位置import cv2 as cvimport nump
- 本文实例讲述了php实现将数组或对象写入到文件的方法。分享给大家供大家参考,具体如下:php将数组或对象原样写入或保存到文件有三种方法可以实
- Mysql事务操作失败如何解决事务的原子性 :事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 。要实现事务的原子性,单单
- 网上有很多关于PHP在IIS下配置的教程,但都是一些很理性化的东西,我从里面整理出来这个教程 发出来为了方便参考,有什么问题也可以大家一起交
- 设置部分:首先网页登录QQ邮箱设置一些待会儿会用到的参数:首先开启POP3/SMTP和IMAP/SMTP服务,然后生成授权码,然后复制到代码