返回顶部
首页 > 资讯 > 后端开发 > GO >Go语言基础切片的创建及初始化示例详解
  • 760
分享到

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

2024-04-02 19:04:59 760人浏览 八月长安
摘要

目录概述语法一、创建和初始化切片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])
}

总结

  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语言切片的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: Go语言基础切片的创建及初始化示例详解

本文链接: https://lsjlt.com/news/157560.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Go语言基础切片的创建及初始化示例详解
    目录概述语法一、创建和初始化切片make字面量二、使用切片赋值和切片切片增长遍历切片总结总示例示例一  两个slice是否相等示例二  两个数字是否包含概述 ...
    99+
    2024-04-02
  • Go语言基础切片的创建及初始化示例分析
    这篇文章主要介绍“Go语言基础切片的创建及初始化示例分析”,在日常操作中,相信很多人在Go语言基础切片的创建及初始化示例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言基础切片的创建及初始化示例分析...
    99+
    2023-06-25
  • Go语言基础变量的声明及初始化示例详解
    目录一、概述二、声明变量三、编译器推导类型的格式【一定要赋值】四、短变量声明并初始化五、匿名变量——没有名字的变量六、注意七、案例一、概述 变量的功能是存储用户的数据 二、声明变量 ...
    99+
    2024-04-02
  • Go语言基础map用法及示例详解
    目录概述语法声明和初始化读取删除遍历总结示例 概述 map是基于key-value键值对的无序的集合 Go语言中的map是引用类型 必须初始化才能使用。 ...
    99+
    2024-04-02
  • Go语言切片详解:从基础到高级
    Go语言切片详解:从基础到高级 引言:Go语言是一种快速、可靠的现代编程语言,切片(slice)是其内置的一种数据结构,它是对数组的一个抽象。切片是动态数组,长度可变,与数组相比更加灵...
    99+
    2024-04-02
  • Go语言基础数组用法及示例详解
    目录概述语法注意示例 概述 固定长度,数组声明后长度便不能再修改 只能存储一种特定类型元素的序列 语法 编号...
    99+
    2024-04-02
  • Go语言基础枚举的用法及示例详解
    目录概述一、普通枚举二、自增枚举注意代码 概述 将变量的值一一列举出来,变量只限于列举出来的值的范围内取值 Go语言中没有枚举这种数据类型的,但是可以使用const配合iota模式来...
    99+
    2024-04-02
  • Go语言基础go build命令用法及示例详解
    目录go build一个Go项目在GOPATH下,会有如下三个目录 使用:注意: go build 1. 用于测试编译多个包或一个main包 2. build命令编译包丢弃非main...
    99+
    2024-04-02
  • Go语言基础go doc命令用法及示例详解
    目录go doc一、使用go doc命令在终端查看go doc packagego doc package/subpackagego doc package function二、使用...
    99+
    2024-04-02
  • Go语言基础函数基本用法及示例详解
    目录概述语法函数定义一.函数参数无参数无返回有参数有返回函数值传递函数引用传递可变参数列表 无默认参数函数作为参数二、返回值多个返回值跳过返回值匿名函数匿名函数可以赋值给一个变量为函...
    99+
    2024-04-02
  • Go语言基础反射示例详解
    目录概述语法一、基本操作二、修改目标对象三、动态调用方法总结示例 概述 在程序运行期对程序动态的进行访问和修改 reflect godoc: https://golang.org/p...
    99+
    2024-04-02
  • Go语言基础结构体用法及示例详解
    目录概述语法结构体定义的三种形式第一种【基本的实例化】第二种【指针类型的结构体】第三种【取结构体的地址实例化,通过&的操作】初始化结构体键值对初始化结构体值列表填充结构体匿名...
    99+
    2024-04-02
  • C语言内存管理及初始化细节示例详解
    目录地址空间指针与内存关系内存分配与初始化细节内存泄漏Cookie地址空间 首先我们回味一下之前的老图,这个图由于是我手残加 ppt 即时创作,又因为是C语言入门时讲的,内容非常粗...
    99+
    2024-04-02
  • Go语言基础for循环语句的用法及示例详解
    目录概述语法注意示例一  死循环,读取文件示例二  打印乘法表示例三  遍历字符串,数组,map 概述 for循环是一个循环控制结构,可以执行指定次数的...
    99+
    2024-04-02
  • Go语言字符串基础示例详解
    目录包含Contains(s,substr string) boolContainsAny(s, chars string) bool统计Count(s, substr string...
    99+
    2024-04-02
  • Go语言基础if条件语句用法及示例详解
    目录概述语法格式规则 概述 条件语句需要开发者通过指定一个或多个条件 并通过测试条件是否为 true 来决定是否执行指定语句 并在条件为 false 的情况再执行另外的语句。 语法 ...
    99+
    2024-04-02
  • Go语言基础switch条件语句基本用法及示例详解
    目录概述语法第一种【switch 带上表达式】第二种【switch 不带表达式】第三种【switch 初始化,表达式】注意示例一【根据今天的日期打印今天星期几】示例二【根据分数打印A...
    99+
    2024-04-02
  • Go语言基础类型及常量用法示例详解
    目录基础类型概述按类别有以下几种数据类型数值类型派生类型变量概述单个变量声明多个变量声明基础类型 概述 在 Go 编程语言中,数据类型用于声明函数和变量。数据类型的出现时为了把数据...
    99+
    2024-04-02
  • Go语言基础go接口用法示例详解
    目录概述语法定义接口实现接口空接口接口的组合总结 概述 Go 语言中的接口就是方法签名的集合,接口只有声明,没有实现,不包含变量。 语法 定义接口 type [接口名] inte...
    99+
    2024-04-02
  • go语言数组及结构体继承和初始化示例解析
    目录分类数组数组定义结构体结构体继承结构体初始化成员的操作同名字段其它匿名字段非结构体类型结构体指针类型结构体字段实现接口分类 类型名称长度默认值说明pointer指针 n...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作