当前位置: 首页 > news >正文

器材管理网站开发东莞模板建网站平台

器材管理网站开发,东莞模板建网站平台,网站开发客户挖掘,瑞安哪里有做百度的网站上一篇 详解go语言的array和slice 【一】已经讲解过,array和slice的一些基本用法#xff0c;使用array和slice时需要注意的地方#xff0c;特别是slice需要注意的地方比较多。上一篇的最后讲解到创建新的slice时使用第三个索引来限制slice的容量#xff0c;在操作新slice时…  上一篇  详解go语言的array和slice 【一】已经讲解过,array和slice的一些基本用法使用array和slice时需要注意的地方特别是slice需要注意的地方比较多。上一篇的最后讲解到创建新的slice时使用第三个索引来限制slice的容量在操作新slice时如果新slice的容量大于长度时添加新元素依然后使源的相应元素改变。这一篇里我会讲解到如何避免这些问题以及迭代、和做为方法参数方面的知识点。 slice的长度和容量设置为同一个值   如果在创建新的slice时我们把他的长度和容量的值设置为样的值那么在append新元素时底层会创建一个新的array并把之前的值复制过去。这样就不会影响之前共同的底层array了。 // 创建一个容量和长度均为6的sliceslice1 : []int{5, 23, 10, 2, 61, 33}// 对slices1进行切片长度为2容量为3slice2 : slice1[1:3:3]fmt.Println(cap, cap(slice2))fmt.Println(slice2, slice2)//修改一个共同指向的元素//两个slice的值都会修改slice2[0] 11111fmt.Println(slice1, slice1)fmt.Println(slice2, slice2)// 增加一个元素slice2 append(slice2, 55555)fmt.Println(slice1: , slice1)fmt.Println(slice2: , slice2)   输出结果 cap 2 slice2 [23 10] slice1 [5 11111 10 2 61 33] slice2 [11111 10] slice1: [5 11111 10 2 61 33] slice2: [11111 10 55555]   代码中的长度和容量是一样的长度和容量的计算公式看我的上一篇博客。增加一个元素后原来共同指向的底层数据是没有变的。因为slice2的底层array被重新赋值了。 迭代slice   go语言内置一个关键字range用于迭代集合当然他也可以迭代slice,也可以使用  _  来忽略我们不关心的元素但是如果只关心index则不需这么写 for index,_ : range slice1。下在给出完整代码 // 创建一个容量和长度均为6的sliceslice1 : []int{5, 23, 10, 2, 61, 33}for index, value : range slice1 {fmt.Println(index: , index, value: , value)}// 可以忽略我们不关心的元素// 只关心valuefor _, value : range slice1 {fmt.Println(value , value)}// 只关心index, 可以不用 _for index : range slice1 {fmt.Println(index: , index)}      需要注意的是rang 迭代的value值并是一个复本我们可以对比一下迭代的value和原slice内相应index下value的地址 // 创建一个容量和长度均为6的sliceslice1 : []int{5, 23, 10, 2, 61, 33}for index, value : range slice1 {fmt.Println(index: , index, value address : , value, slice1 value address, slice1[index])}   输出结果 index: 0 value address : 0xc04204e088 slice1 value address 0xc04206a030 index: 1 value address : 0xc04204e088 slice1 value address 0xc04206a038 index: 2 value address : 0xc04204e088 slice1 value address 0xc04206a040 index: 3 value address : 0xc04204e088 slice1 value address 0xc04206a048 index: 4 value address : 0xc04204e088 slice1 value address 0xc04206a050 index: 5 value address : 0xc04204e088 slice1 value address 0xc04206a058   slice1中value的地址是不断变化的。而迭代的value值的地址没有变化这是因为value是一个变量为次迭代的时候赋不同的值。我们把代码写成下面这样你就清楚了 var index, value intfor index, value range slice1 {fmt.Println(index: , index, index, value address : , value, slice1 value address, slice1[index])}    除了使用rang 也可以使用传统的for循环来做迭代 slice1 : []int{5, 23, 10, 2, 61, 33}for i, len : 1, len(slice1); i len; i {fmt.Println(index: , i, value:, slice1[i])}    slice作为方法参数    由于slice的特殊结构有一个指针指向一个数组 s : make([]int, 2, 5)fmt.Println(len: , len(s))fmt.Println(cap: , cap(s))s append(s, 2)s[0] 12     所以slice做为方法的参数传递时只会复制slice本身而不会复制slice底层的array.如果我们创建一个int类型有100万长度的slice 把他传递给一个方法时只需要复制24个字节就够了。指针需要8个长度和容量都是8个。 const size int 1000 * 1000func main() {slice0 : make([]int, size)fmt.Println(slice0 len: , len(slice0), cap :, cap(slice0))doSomeThing(slice0) }func doSomeThing(s []int) {fmt.Println(len(s)) }    转载于:https://www.cnblogs.com/li-peng/p/7541554.html
http://wiki.neutronadmin.com/news/371685/

相关文章:

  • html网站开发教程什么网站可以自己做房子设计图
  • 功能多的免费网站建设笔记模板wordpress
  • 怎么看国外设计网站ps做网站的流程
  • 网站开发的安全性原则域名购买后怎么使用
  • 网站建设记账怎样弄一个自己的网站
  • 电商网站的建设与运营公司网页设计代码
  • 知名网站规划广州网站建设公司排行
  • 苏州街网站建设高校网站一般采用什么网页布局
  • 手机版网站怎么上传asp.net窗体网站
  • 小灯具网站建设方案专业网站的特点
  • 用ps网站首页怎么做群晖wordpress如何连接mysql
  • 动态手机网站怎么做深圳宝安区核酸检测点
  • php网站开发发展趋势网站做优化一开始怎么做
  • 辽宁建设工程信息网网站黑河市网站建设公司
  • 网站没被收录怎么办wordpress前台不显示
  • 如何在自己电脑上做网站国外网站免费dns
  • 涟源网站建设四川省住房建设厅网站打不开
  • 展会网站建设 服务器选择很重要众v创业营网站建设
  • 安徽网站制作网络推广引流是什么意思
  • 做淘宝客建网站要多少费用公司网站建设网站
  • 网站优化 kps上海人才网招聘网最新招聘
  • 上海php网站建设在线视频网站开发方案php
  • 网站建设费怎么写会计科目对网站建设有什么样好的建设意见
  • wordpress企业站主题哪个好网页游戏开服表最全
  • 淘宝优惠劵网站怎么做wordpress 微信 主题制作
  • 网站建设案例信息地方门户类网站
  • 重庆网站建设-首选云慧通代理记账网站模板
  • 盐城网站建设咨询凡科门店通怎么样
  • 电子商务网站建设与管理读后感个人养老金制度9月底前亮相
  • 企业类网站模版扬子市建设局网站