Golang中slice和arry的区别是什么
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这期内容当中小编将会给大家带来有关Golang中slice和arry的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、问题提出,slice在被复制之后,
千家信息网最后更新 2025年12月02日Golang中slice和arry的区别是什么
这期内容当中小编将会给大家带来有关Golang中slice和arry的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
一、问题提出,slice在被复制之后,修改复制之后的那个slice内容,结果复制之前的slice内容也变化了。
package mainimport ("fmt""reflect")func main() {var arr [8]int = [8]int{1}var arr1 [8]intvar slice, slice1 []intfmt.Println("type of:", reflect.TypeOf(arr), reflect.TypeOf(slice))arr1 = arrfmt.Println("1: arr|arr1 of:", arr, arr1)arr1 = [8]int{3}fmt.Println("2: arr|arr1 of:", arr, arr1)slice = append(slice, 2)slice1 = slicefmt.Println("3: slice|slice1 of:", slice, slice1)slice1[0]= 5fmt.Println("4: slice|slice1 of:", slice, slice1)}output:type of: [8]int []int1: arr|arr1 of: [1 0 0 0 0 0 0 0] [1 0 0 0 0 0 0 0]2: arr|arr1 of: [1 0 0 0 0 0 0 0] [3 0 0 0 0 0 0 0] // 只是修改的那个变化了3: slice|slice1 of: [2] [2]4: slice|slice1 of: [5] [5] // 好奇怪,怎么都更改了呢
结果分析:
看到输出结果,笔者开始是蒙的,怎么两种[8]int,[]int的复制会有两个结果呢?arry的复制之后,两个arry都是独立的,slice的复制之后,内容却会同时变化。
二、问题原因
开始之前,我们先看下什么是slice,什么是arry?
例子:
var arr [8]int // 这种指定了长度的数组就是arry类型,复制都是值的复制一份。
var slice []int // 这种 就是slice类型,更像是指针,复制操作其实就是操作指针的公共地址。
Go中将arry和slice当作了两种数据类型,一个是与int等基本类型具有相同的特征,一个是引用类型与指针和interface具有相同的特征。也正是这个区别,导致了上面代码里面的操作,输出结果会有这种不同。
上述就是小编为大家分享的Golang中slice和arry的区别是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
内容
类型
结果
就是
指针
分析
变化
相同
两个
特征
问题
输出
不同
专业
中将
中小
代码
例子
内容丰富
原因
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
英国基因网络技术
北京智慧园区软件开发价格
软件开发需要用到哪些技能
我的世界网易版可买32k的服务器
手机实名软件开发
网络安全 9月1日
数据库实施和维护案例分析
小学生国家网络安全教育小故事
拉萨网络安全技术提升攻防技术
软件开发视频大讲堂丛书
教学抠像软件开发团队
vbk网络技术公司
软件数据库工作
部队网络安全法纪警示教育
戴尔服务器客服电话400
网络安全什么大学好
node开服务器
直播app服务器配置
肉肉微博 网络安全
免费流媒体服务器软件
b5服务器分差
简易的网络安全接入方案
安装msde数据库引擎
北京软件开发设施应用
南昌软件开发公司待遇怎么样
教育行业网络安全指导思想
cisma数据库
服务器挖矿
5g网络技术的机遇分析
美好生活互联网科技有限公司