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

电商网站设计公司优选亿企邦在境外做网站网站

电商网站设计公司优选亿企邦,在境外做网站网站,忘了网站链接怎么做,汉字叔叔花了多少钱做网站Go语言基础 介绍 基础 切片 切片声明 切片初始化 切片基础操作 多维切片 介绍 本文介绍Go语言中切片(slice)(切片声明、切片初始化、切片基础操作、多维切片)等相关知识。 基础 切片 切片#xff08;slice#xff09;是对数组的一个连续片段的引用#xff0c;切…Go语言基础 介绍 基础 切片 切片声明 切片初始化 切片基础操作 多维切片 介绍 本文介绍Go语言中切片(slice)(切片声明、切片初始化、切片基础操作、多维切片)等相关知识。 基础 切片 切片slice是对数组的一个连续片段的引用切片是一个引用类型。切片是长度可变的数组由三部分组成 指针指向的数组元素的地址长度元素的数量容量切片可容纳多少元素 切片声明 需要指定组成元素的类型不需要指定存储元素的个数。声明后默认初始化为 nil意思是不存在此切片引用。 package mainimport fmtfunc main() {// 声明一个切片var slice1 []intfmt.Printf(slice1 type: %T, value: %v\n, slice1, slice1)// 自动类型推导slice2 : []int{}fmt.Printf(slice2 type: %T, value: %v\n, slice2, slice2) }输出结果 slice1 type: []int, value: [] slice2 type: []int, value: [] 切片初始化 切片初始化方式较多具体如下 package mainimport fmtfunc main() {// 字面量初始化var slice1 []int []int{1, 2, 3, 4, 5}fmt.Println(slice1: , slice1, , cap: , cap(slice1))// 字面量初始化空切片var slice2 []int []int{}fmt.Println(slice2: , slice2, , cap: , cap(slice2))// 从数组创建并初始化切片var arr [5]int [5]int{1, 2, 3, 4, 5}slice3 : arr[0:3]fmt.Println(slice3: , slice3, , cap: , cap(slice3))slice4 : arr[0:2:2]fmt.Println(slice4: , slice4, , cap: , cap(slice4))// 从切片创建并初始化切片slice5 : slice4[:1]fmt.Println(slice5: , slice5, , cap: , cap(slice5))slice6 : slice4[1:]fmt.Println(slice6: , slice6, , cap: , cap(slice6))slice7 : slice4[:]fmt.Println(slice7: , slice7, , cap: , cap(slice7))slice8 : slice4[0:0]fmt.Println(slice8: , slice8, , cap: , cap(slice8))// 指定长度和容量字面量初始化slice9 : []int{0: 20, 4: 60}fmt.Println(slice9: , slice9, , cap: , cap(slice9))// 使用 make 函数初始化slice10 : make([]int, 3)fmt.Println(slice10: , slice10, , cap: , cap(slice10))slice11 : make([]int, 3, 6)fmt.Println(slice11: , slice11, , cap: , cap(slice11)) }输出结果 slice1: [1 2 3 4 5] , cap: 5 slice2: [] , cap: 0 slice3: [1 2 3] , cap: 5 slice4: [1 2] , cap: 2 slice5: [1] , cap: 2 slice6: [2] , cap: 1 slice7: [1 2] , cap: 2 slice8: [] , cap: 2 slice9: [20 0 0 0 60] , cap: 5 slice10: [0 0 0] , cap: 3 slice11: [0 0 0] , cap: 6 切片基础操作 获取切片长度和容量 package mainimport fmtfunc main() {var slice1 []int []int{1, 2, 3, 4, 5}fmt.Printf(slice1 len: %v, cap: %v\n, len(slice1), cap(slice1)) }输出结果 slice1 len: 5, cap: 5 切片的访问和修改(通过索引对切片元素进行访问和修改元素的索引从左到右依次为:0 ~ n(n为切片长度-1))切片共享底层数组任何变化都会导致其它切片及底层共享数组变化 package mainimport fmtfunc main() {// 以数组方式创建切片var arr [5]int [5]int{1, 2, 3, 4, 5}fmt.Printf(arr : %v\n, arr)var slice1 []int arr[0:3]fmt.Printf(slice1 : %v\n, slice1)// 索引方式访问fmt.Printf(slice1[0] : %v\n, slice1[0])fmt.Printf(slice1[1] : %v\n, slice1[1])fmt.Printf(slice1[2] : %v\n, slice1[2])// 修改值slice1[0] 100slice1[2] 200fmt.Printf(slice1 : %v\n, slice1)fmt.Printf(arr : %v\n, arr)// 切片创建新切片slice2 : slice1[:] fmt.Printf(slice2 : %v\n, slice2)slice2[0] 150slice2[1] 230fmt.Printf(slice2 : %v\n, slice2)fmt.Printf(slice1 : %v\n, slice1)fmt.Printf(arr : %v\n, arr) }输出结果 arr : [1 2 3 4 5] slice1 : [1 2 3] slice1[0] : 1 slice1[1] : 2 slice1[2] : 3 slice1 : [100 2 200] arr : [100 2 200 4 5] slice2 : [100 2 200] slice2 : [150 230 200] slice1 : [150 230 200] arr : [150 230 200 4 5] 切片遍历 package mainimport fmtfunc main() {var arr [5]int [5]int{1, 2, 3, 4, 5}fmt.Printf(arr : %v\n, arr)var slice1 []int arr[0:3]fmt.Printf(slice1 : %v\n, slice1)// for 循环方式遍历for i : 0; i len(slice1); i {fmt.Println(slice1[, i, ] , slice1[i])}fmt.Println()// for-range 方式遍历for i, v : range slice1 {fmt.Println(slice1[, i, ] , v)} }输出结果 arr : [1 2 3 4 5] slice1 : [1 2 3] slice1[ 0 ] 1 slice1[ 1 ] 2 slice1[ 2 ] 3 slice1[ 0 ] 1 slice1[ 1 ] 2 slice1[ 2 ] 3 增加元素内建函数 append 可以为切片动态添加元素使用 append 对切片增加元素并返回修改后切片当长度len在容量cap范围内时只增加长度容量和底层数组不变当长度len超过容量cap范围则会新创建底层数组并对容量进行扩容元素数量小于 1024 时约按原容量 1 倍增加元素数量大于 1024 时约按原容量 0.5 倍增加不同Go版本可能有变化当前使用Go1.22切片头部增加元素会导致切片整体复制操作效率没有末尾增加元素高 package mainimport fmtfunc main() {var arr [5]int [5]int{1, 2, 3, 4, 5}fmt.Printf(arr : %v\n, arr)var slice1 []int arr[0:3]fmt.Printf(slice1 : %v, len: %v, cap: %v\n, slice1, len(slice1), cap(slice1))// 增加元素末尾增加slice1 append(slice1, 100, 200, 300)fmt.Printf(slice1 append: %v, len: %v, cap: %v\n, slice1, len(slice1), cap(slice1))// 增加元素末尾增加slice1 append(slice1, 1, 2, 3, 4, 5, 6, 7, 8)fmt.Printf(slice1 append: %v, len: %v, cap: %v\n, slice1, len(slice1), cap(slice1))slice2 : []int{0: 100, 1023: 100}fmt.Printf(slice2 len: %v, cap: %v\n, len(slice2), cap(slice2))// 增加超过 1024 个元素末尾增加slice2 append(slice2, 1, 2, 3, 4, 5)fmt.Printf(slice2 len: %v, cap: %v\n, len(slice2), cap(slice2)) } 输出结果 arr : [1 2 3 4 5] slice1 : [1 2 3], len: 3, cap: 5 slice1 append: [1 2 3 100 200 300], len: 6, cap: 10 slice1 append: [1 2 3 100 200 300 1 2 3 4 5 6 7 8], len: 14, cap: 20 slice2 len: 1024, cap: 1024 slice2 len: 1029, cap: 1536 切片复制使用 copy 函数复制元素数量为 src 元素数量和 dest 元素数量的最小值 package mainimport fmtfunc main() {var slice1 []int []int{1, 2, 3}var slice2 []int []int{100, 200, 300, 400, 500}var slice3 []int []int{1}// copy slice2的3个元素替换到slice1元素copy(slice1, slice2)fmt.Printf(%v, %v, %v\n, slice1, slice2, slice3)// copy slice3的1个元素替换到slice2的第一个元素copy(slice2, slice3)fmt.Printf(%v, %v, %v\n, slice1, slice2, slice3)// copy slice1的1个元素替换到slice3的第一个元素copy(slice3, slice1)fmt.Printf(%v, %v, %v\n, slice1, slice2, slice3) }输出结果 [100 200 300], [100 200 300 400 500], [1] [100 200 300], [1 200 300 400 500], [1] [100 200 300], [1 200 300 400 500], [100] 删除元素清空切片 package mainimport fmtfunc main() {var slice1 []int []int{1, 2, 3}// 清空切片slice1 slice1[0:0]fmt.Println(slice1 clear: , slice1)slice1 append(slice1, 1, 2, 3, 4, 5, 6)fmt.Println(slice1 append: , slice1)// 清空切片slice1 nilfmt.Println(slice1 clear: , slice1)slice1 append(slice1, 1, 2, 3, 4, 5, 6)fmt.Println(slice1 append: , slice1)// 删除切片删除第一个元素slice1 slice1[1:]fmt.Println(slice1)// 增加第一个元素将上一步删除的元素重新添加到原来位置slice1 append([]int{1}, slice1...)fmt.Println(slice1 append: , slice1)// 删除切片删除末尾元素slice1 slice1[:len(slice1)-1]fmt.Println(slice1)// 增加末尾的元素slice1 append(slice1, 6)fmt.Println(slice1 append: , slice1)// 删除第三个元素slice3 : []int{}slice3 append(slice3, slice1[0:2]...)slice3 append(slice3, slice1[3:]...)slice1 slice3fmt.Println(slice3: , slice1) }输出结果 slice1 clear: [] slice1 append: [1 2 3 4 5 6] slice1 clear: [] slice1 append: [1 2 3 4 5 6] [2 3 4 5 6] slice1 append: [1 2 3 4 5 6] [1 2 3 4 5] slice1 append: [1 2 3 4 5 6] slice3: [1 2 4 5 6] 多维切片 多维切片即切片的元素也可以是切片类型 package mainimport fmtfunc main() {// 二维切片声明且初始化var slice1 [][]int [][]int{{1, 2, 3}, {4, 5, 66}}fmt.Println(slice1: , slice1)// 自动类型推导slice2 : [][]int{{1, 2, 3}, {4, 55, 6}}fmt.Println(slice2: , slice2)// make创建切片slice3 : make([][]int, 2)fmt.Println(slice3: , slice3)slice4 : make([][]int, 2, 5)fmt.Println(slice4: , slice4)// 修改与访问slice2[0] []int{100, 200, 300, 400}slice2[0][2] 30fmt.Println(slice2: , slice2)// 切片创建切片fmt.Println(slice3: , slice2[0:1])// 切片遍历for 循环for i : 0; i len(slice2); i {for j : 0; j len(slice2[i]); j {fmt.Printf(slice2[%v][%v] %v\t, i, j, slice2[i][j])}fmt.Println()}// 切片遍历for-rangefor i, s : range slice2 {for j, v : range s {fmt.Printf(slice2[%v][%v] %v\t, i, j, v)}fmt.Println()}// 增加元素slice1 append(slice1, []int{10, 20, 30, 40})fmt.Println(slice1 append: , slice1)slice1[0] append(slice1[0], 10, 20, 30, 40)fmt.Println(slice1 append: , slice1)// 复制元素src 数量少于 dst 数量时将 src 对应行替换到 dst对应行dst 多出行继续显示// src 数量大于 dst 数量时以 dst 数量为准将 src 对应行替换到 dst对应行fmt.Println(slice1 copy before: , slice1)fmt.Println(slice2 copy before: , slice2)copy(slice1, slice2)fmt.Println(slice1 copy: , slice1) }输出结果 slice1: [[1 2 3] [4 5 66]] slice2: [[1 2 3] [4 55 6]] slice3: [[] []] slice4: [[] []] slice2: [[100 200 30 400] [4 55 6]] slice3: [[100 200 30 400]] slice2[0][0] 100 slice2[0][1] 200 slice2[0][2] 30 slice2[0][3] 400 slice2[1][0] 4 slice2[1][1] 55 slice2[1][2] 6 slice2[0][0] 100 slice2[0][1] 200 slice2[0][2] 30 slice2[0][3] 400 slice2[1][0] 4 slice2[1][1] 55 slice2[1][2] 6 slice1 append: [[1 2 3] [4 5 66] [10 20 30 40]] slice1 append: [[1 2 3 10 20 30 40] [4 5 66] [10 20 30 40]] slice1 copy before: [[1 2 3 10 20 30 40] [4 5 66] [10 20 30 40]] slice2 copy before: [[100 200 30 400] [4 55 6]] slice1 copy: [[100 200 30 400] [4 55 6] [10 20 30 40]] 起始
http://www.w-s-a.com/news/246384/

相关文章:

  • 凯里网站建设如何收费网站建设php怎么安装
  • 网站建设专业网站设计公司物格网一站式建站价格
  • seo网站培训优化怎么做如何给网站做下载附件
  • php网站建设文献综述怎么样提高网站排名
  • 专用车网站建设wordpress半透明
  • 石狮网站建设哪家好wordpress 3.9 漏洞
  • 为何建设单位网站找网络推广策畿
  • 用网站模板做网站动漫制作专业学校前十名
  • 网页 代码怎么做网站网站建设与维护课程设计
  • 网站制作哪家公司好企业名录联系电话
  • 做的网站怎么上传到网上wordpress图片之间空一行
  • 腾讯云建设网站视频vi报价单
  • 个人网站发布怎么做建设银行网站收款怎么打明细
  • 网站整体色调网站建设都有什么类型
  • 比较简洁大方的网站软件工程四大方向
  • 大家称赞的网站建设常德小学报名网站
  • 做网站怎么建文件夹百度网盘搜索神器
  • 企业有域名怎么做网站淘宝推广平台
  • 学网站开发去哪学药品销售推广方案
  • 哔哩哔哩h5播放器深圳网站seo外包公司哪家好
  • asp做的手机网站wordpress 文章title
  • 网站验证码目录wordpress内嵌播放器
  • 文明网网站建设南昌市建设规费标准网站
  • 安康有建网站的公司吗做网站用什么网名好
  • 济南网站制作哪家专业西安市城乡建设网官方网站
  • 网站建设有趣小游戏怎样让网站优化的方式
  • 昭通做网站儿童编程教学入门教程
  • eclipse静态网站开发软文广告投放平台
  • 网站建设教学视频济南做网站需要多少钱
  • 网站免费做软件市工商联官方网站建设方案