go语言数组与切片

news2025/1/20 5:11:49

1.数组

        数组 类型名是[n]elemetType,其中n是数组长度,elementType是数组元素类型。比如一个包 含2个int类型元素的数组类型可表示为[2]int。 数组一般在创建时通过字面量初始化,单独声明一个数组类型变量而不进行初始化是没有意义的。

package main

import (
	"fmt"
)

func main() {
	a := [3]int{1, 2, 3}   \\指定长度和初始化字面量
	b := [...]int{1, 2, 3}  \\不指定长度,但是由后面的初始化列表来确定其长度
	c := [3]int{1: 1, 2: 3}  \\指定总长度,并通过索引值进行初始化,没有初始化的元素使用类型默认值0 
	d := [...]int{1: 1, 2: 3} \\不指定总长度,并通过索引值进行初始化,数组长度由最后一个索引值确定,没有初始化的元素使用类型默认值0
	for i := 0; i < 3; i++ {
		f := a[i]
		g := b[i]
		h := c[i]
		j := d[i]
		fmt.Printf("\r")
		fmt.Println(f, g, h, j)
		//	fmt.Printf("\r")

	}
}

1 1 0 0
2 2 1 1
3 3 3 3

数组的特点:

        数组创建后长度就固定了,不可以在追加元素

        数组是值类型,数组赋值或作为函数参数都是值拷贝

        数组长度是数组类型的组成部分,[10]int和[20]int表示不同的类型

        可以根据数组创建切片

2.切片

        Go语言的数组的定长性和值拷贝限制了其使用场景,Go提供了另一种数据类型slice(切片),这是一种变长数组,其数据结构中有指向数组的指针,所以是一种引用类型。

        Go为切片维护三个元素:指向底层数组的指针、切片的元素数量和底层数组的容量。

        我们通过数组创建切片:

package main

import (
	"fmt"
)

func main() {
	var array = [...]int{0, 1, 2, 3, 4, 5, 6}
	s1 := array[0:4]
	s2 := array[:4]
	s3 := array[2:]
	fmt.Printf("%v\n", s1)
	fmt.Printf("%v\n", s2)
	fmt.Printf("%v\n", s3)
}

[0 1 2 3]
[0 1 2 3]  
[2 3 4 5 6]

        通过内置函数make创建切片,注意由make 创建的切片各元素被默认初始化为切片元素类型的零值:

package main

import (
	"fmt"
)

func main() {
	a := make([]int, 10)
	fmt.Printf("%v\n", a)
}

[0 0 0 0 0 0 0 0 0 0]

        注意:直接声明切片类型变量是没有意义的

package main

import (
	"fmt"
)

func main() {
	var a []int
	fmt.Printf("%v\n", a)
}

[]

        此时a的数据结构为:

        切片支持的操作:

        1.内置函数len()返回切片长度

        2.内置函数cap()返回切片底层数组容量

        3.内置函数append()对切片进行追加

        4.内置函数copy()用于复制一个切片

package main

import (
	"fmt"
)

func main() {
	a := [...]int{0, 1, 2, 3, 4, 5, 6}
	b := make([]int, 2, 4)
	c := a[0:3]
	fmt.Println(len(b))
	fmt.Println(cap(b))

	b = append(b, 1)
	fmt.Println(b)
	fmt.Println(len(b))
	fmt.Println(cap(b))

	b = append(b, c...)
	fmt.Println(b)
	fmt.Println(len(b))
	fmt.Println(cap(b))

	d := make([]int, 2, 2)
	copy(d, c)
	fmt.Println(d)
	fmt.Println(len(d))
	fmt.Println(cap(d))
}

2
4            
[0 0 1]      
3            
4            
[0 0 1 0 1 2]
6            
8            
[0 1]        
2            
2           

字符串和切片的相互转换:

package main

func main() {
	str := "hello,world"
	a := []byte(str)
	b := []rune(str)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1682092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux-CentOS-7忘记密码-修改登录密码图文详解

Linux-CentOS-7忘记密码-修改登录密码图文详解 1.重启系统&#xff1a; 在登录界面&#xff0c;选择要登录的用户并点击"Power"按钮&#xff0c;然后选择"Restart"或"Reboot"重新启动系统。 在系统启动时持续按下 “e” 键进入编辑模式。 2…

人工智能到底是什么玩意儿?

说实话&#xff0c;每次听到“人工智能”这个词&#xff0c;我都感觉像是在听天书一样。它似乎总是被包裹在一堆高大上的术语和概念里&#xff0c;让人摸不着头脑。但今天&#xff0c;我决定挑战一下自己&#xff0c;把这个问题搞个明白&#xff01; 首先&#xff0c;我得承认&…

通过gen_compile_commands.py产生compile_commands.json文件的方法

大家在使用vscode查看linux源代码时&#xff0c;会有很多飘红处&#xff0c;而且函数的跳转非常不方便。所以linux给了一个脚本gen_compile_commands.py&#xff0c;此脚本类似ctags这样&#xff0c;产生相应的关联之类的数据库&#xff0c;方便函数及文件的跳转等等。非常好。…

每日一练 2024.5.16 (补 2024.5.15)

题目&#xff1a; 给定一个 正整数 数组 beans &#xff0c;其中每个整数表示一个袋子里装的魔法豆的数目。 请你从每个袋子中 拿出 一些豆子&#xff08;也可以 不拿出&#xff09;&#xff0c;使得剩下的 非空 袋子中&#xff08;即 至少还有一颗 魔法豆的袋子&#xff09;…

Docker mysql主从同步

1. 在主节点注册一个账号&#xff0c;用于子节点访问主节点 #mysql 1主2从&#xff0c;先创建主节点 ,注意 \ 后面不要带空格 docker run --name mysql-m \ -v /usr/local/mysql/data:/var/lib/mysql \ -v /usr/local/mysql/conf:/etc/mysql/conf.d \ -v /usr/local/mysql/log:…

20231911 2023-2024-2 《网络攻防实践》实践九报告

1.实践内容 1.1 缓冲区 缓冲区是内存空间的一部分&#xff0c;在内存中预留了一定的存储空间&#xff0c;用来暂时保存输入和输出等I/O操作的一些数据&#xff0c;这些预留的空间就叫做缓冲区。 1.2 shellcode shellcode是一段用于利用软件漏洞而执行的代码&#xff0c;也可以…

哪款桌面便签app能帮助我提升工作效率

作为上班族&#xff0c;我们每天都要处理大量的工作事项&#xff0c;从策划方案到处理邮件&#xff0c;每一个环节都需高效且有条不紊。在这样的工作环境下&#xff0c;提升效率显得尤为重要。而选择一款优秀的桌面便签app&#xff0c;无疑是提高工作效率的关键。 桌面便签app…

6-10 阶乘计算升级版

void Print_Factorial ( const int N ) {if(N<0){printf("Invalid input");return;} int nN;int a[10000]{};a[0]1; //0和1的阶乘都是1&#xff0c;同时又是用该个位去&#xff0c;所以初始化为1&#xff1b;int i,j;int len0;//当前数组所占的最大下标in…

多客开源】游戏陪玩系统,游戏陪玩源码,游戏陪玩语音社交源码运营版游戏陪玩平台源码/tt语音聊天/声优服务/陪玩系统源码开黑/约玩源码

介绍 我们针对陪玩app源码市场的发展趋势&#xff0c;整合市面上主流陪玩app应用功能&#xff0c;自主开发了多客陪玩系统源码&#xff0c;并可为客户提供全部原生陪玩源码&#xff0c;进行二次开发&#xff0c;打造适用于线上游戏陪玩、语音聊天、心理咨询、情感陪伴等业务场…

NOC初赛成绩,你们都查到了吗?

NOC大赛部分编程赛道要开始复赛了&#xff0c;2024信息素养大赛初赛及NOC复赛这篇就够了&#xff01;初赛结束后&#xff0c;很多家长和学生还没有查到是否晋级复赛&#xff0c;因为网站卡的出现了各种问题&#xff0c;主要集中在打不开&#xff0c;验证码错误等&#xff0c;根…

【数据分析实战】华住与锦江市场布局与未来趋势解析Python数据分析采集爬虫

文章目录 引言数据采集和展示数据采集数据预处理 数据分析与结果国内门店数量对比结果可视化结果分析 酒店平均房间数对比Code结果可视化结果分析 近六年开店数量对比结果可视化结果分析 写在最后 引言 随着旅游经济的持续发展&#xff0c;中国酒店行业正迅速壮大&#xff0c;…

基于51单片机的非接触式无线红外测温

基于51单片机的无线红外测温 &#xff08;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.采用红外温度传感器测温并用LCD1602显示&#xff1b; 2.按键为启动按键、保存按键、显示数据按键&#xff0c;可以实现对温度数值的控制…

InnoDB 事务处理机制

文章目录 前言1. 事务处理挑战1.1 事务机制处理的问题1.2 并发事务带来的问题 2. InnodDB 和 ACID 模型2.1 Innodb Buffer Pool2.2 Redo log2.3 Undo log2.4 应用案例 3. 隔离级别和锁机制3.1 事务隔离级别3.1.1 READ UNCOMMITTED3.1.2 READ COMMITTED3.1.3 REPEATABLE READ3.1…

AndroidStudio集成高德地图后出现黑屏并报错

报错内容为&#xff1a;No implementation found for void com.autonavi.base.ae.gmap.GLMapEngine.nativeMainThreadTrigger(int, long) (tried Java_com_autonavi_base_ae_gmap_GLMapEngine_nativeMainThreadTrigger and Java_com_autonavi_base_ae_gmap_GLMapEngine_nativeM…

2024CCPC郑州邀请赛暨河南省赛(A,B,C,D,F,G,H,J,K,L,M)

2024 National Invitational of CCPC (Zhengzhou), 2024 CCPC Henan Provincial Collegiate Programming Contest 2024 年中国大学生程序设计竞赛全国邀请赛&#xff08;郑州&#xff09;暨第六届 CCPC 河南省大学生程序设计竞赛 比赛链接 这场的题说实话难度其实都不大&…

数仓建模理论 之 维度建模

说起维度建模&#xff0c;你不得不知道以下几个概念&#xff1a;事实表、维度表、星型模型、雪花模型、星座模型 维度建模 Ralph Kimball推崇数据集市的集合为数据仓库&#xff0c;同时也提出了对数据集市的维度建模&#xff0c;将数据仓库中的表划分为事实表、维度表两种类型…

浏览器插件Video Speed Controller(视频倍速播放),与网页自身快捷键冲突/重复/叠加的解决办法

浏览器插件Video Speed Controller&#xff08;视频倍速播放&#xff09;&#xff0c;与网站自身快捷键冲突/重复/叠加的解决办法 插件介绍问题曾今尝试的办法今日发现插件列表中打开Video Speed Controller的设置设置页面翻到下面&#xff0c;打开实验性功能。将需要屏蔽的原网…

Invicti v24.5.0 for Windows - Web 应用程序安全测试

Invicti v24.5.0 for Windows - Web 应用程序安全测试 Invicti Standard v24.5.0 - 7 May 2024 请访问原文链接&#xff1a;Invicti v24.5.0 for Windows - Web 应用程序安全测试&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.o…

huggingface笔记:使用accelerate加速

1 介绍 随着模型规模的增大&#xff0c;并行处理已成为在有限硬件上训练大型模型和提高训练速度的重要策略。Hugging Face 创建了Accelerate库&#xff0c;帮助用户在任何类型的分布式环境中轻松训练Transformers模型&#xff0c;无论是单机多GPU还是跨多机的多GPU 2 创建Acce…

详解动态规划之01背包问题及其空间压缩(图文并茂+例题讲解)

1. 动态规划问题的本质 记忆化地暴力搜索所有可能性来得到问题的解 我们常常会遇到一些问题&#xff0c;需要我们在n次操作&#xff0c;且每次操作有k种选择时&#xff0c;求出最终需要的最小或最大代价。处理类似的问题&#xff0c;我们一般需要遍历所有的可能性(相当于走一遍…