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

莆田手表网站百度营销客户端

莆田手表网站,百度营销客户端,家具东莞网站建设,wap浏览器设置slice Go语言的切片是对数组的抽象。 数组的使用 package mainimport ("fmt" )// 传递固定长度的数组还是值传递的方式 func printArray(myArray [5]int) {for index, value : range myArray {fmt.Println("index:", index, "value:", value)…

slice

Go语言的切片是对数组的抽象。

数组的使用
package mainimport ("fmt"
)// 传递固定长度的数组还是值传递的方式
func printArray(myArray [5]int) {for index, value := range myArray {fmt.Println("index:", index, "value:", value)}}func main() {var myArr [5]intmyArr2 := [10]int{1, 2, 3, 4}myArr3 := [4]int{1, 2, 3, 4}myArr4 := []int{1, 2, 3, 4}for i := 0; i < len(myArr); i++ {fmt.Println(myArr[i])}for index, value := range myArr2 {fmt.Println("index:", index, "value:", value)}fmt.Printf("myArr1 type=%T
", myArr)fmt.Printf("myArr2 type=%T
", myArr2)fmt.Printf("myArr3 type=%T
", myArr3)}

注意

数组传递的参数是以值拷贝的形式进行传递,如下:(在函数中修改了,但在主函数中并没有变化)

package mainimport ("fmt"
)// 传递固定长度的数组还是值传递的方式
func printArray(myArray [5]int) {for index, value := range myArray {fmt.Println("index:", index, "value:", value)}myArray[0] = 15}func main() {myArr2 := [5]int{1, 2, 3, 4}printArray(myArr2)fmt.Println("==================")for index, value := range myArr2 {fmt.Println("index:", index, "value:", value)}}

Go数组的长度不可改变,在特定的场景中这样的集合就不太适合了,Go中就提供了内置类型切片(动态数组),与数组相比,切片的长度是不固定的,可以追加时可能使得切片的容量增大。

定义切片

可以声明一个未指定大小的数组来定义切片**(切片不需要说明长度。)**

var identifier []type
使用make()函数来创建切片:
var slice1 []type = make([]type, len)也可以简写为slice1 := make([]type, len)//也可以指定容量,其中capacity为可选参数。make([]T, length, capacity)
切片的四种初始化的方式
package mainimport "fmt"func main() {//声明slice是一个切片,并且初始化,默认值是1,2,3长度是len=3slice1 := []int{1, 2, 3}//声明slice是一个切片,但是并没有为slice分配空间var slice2 []intslice2 = make([]int, 10, 15)slice2[0] = 100//声明slice是一个切片,同时给slice分配3个空间,初始化值是0var slice3 []int = make([]int, 10)//声明slice是一个切片,同时为slice分配空间,10个空间,初始化值是0,通过:=推导出slice是一个切片slice4 := make([]int, 10)fmt.Printf("len=%d,slice=%v
", len(slice1), slice1)fmt.Printf("len=%d,slice=%v,cap=%d
", len(slice2), slice2, cap(slice2))fmt.Printf("len=%d,slice=%v
", len(slice3), slice3)fmt.Printf("len=%d,slice=%v
", len(slice4), slice4)}

切片的追加,截取与拷贝

切片示意图:

追加

如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来

长度增加后,超过容量,则容量增加2倍

package mainimport "fmt"func main() {var numbers = make([]int, 3, 5)fmt.Printf("len=%d,cap=%d,slice=%v
", len(numbers), cap(numbers), numbers)numbers = append(numbers, 1)fmt.Printf("len=%d,cap=%d,slice=%v
", len(numbers), cap(numbers), numbers)numbers = append(numbers, 1)numbers = append(numbers, 1)fmt.Printf("len=%d,cap=%d,slice=%v
", len(numbers), cap(numbers), numbers)}

截取
	s := []int{1, 2, 3}//左闭右开s1 := s[0:2]s1[0] = 100s[1] = 200fmt.Printf("len=%d,cap=%d,slice=%v
", len(s), cap(s), s)fmt.Printf("len=%d,cap=%d,slice=%v
", len(s1), cap(s1), s1)

拷贝

截取是采用的浅拷贝,是指向的同一个地址。

如果要深拷贝。可以使用copy函数

	s := []int{1, 2, 3}var s1 = make([]int, 3)copy(s1, s)s1[0] = 100fmt.Printf("len=%d,cap=%d,slice=%v
", len(s), cap(s), s)fmt.Printf("len=%d,cap=%d,slice=%v
", len(s1), cap(s1), s1)

http://www.dtcms.com/wzjs/239830.html

相关文章:

  • 公司设计网页搜索引擎优化的实验结果分析
  • 品牌平价网站建设湖南企业竞价优化
  • 网站建设与微信公众号绑定接推广怎么收费
  • 南京外贸网站建设系统新闻株洲最新
  • 招聘网站开发图片优化是什么意思
  • 南通市网站建设我的完成年s8视频加密线路
  • it在线学习网站开发可以建网站的网络公司有哪些
  • 太原在线网站建设微信小程序开发文档
  • 可以免费做网站如何开通自己的网站
  • 做哪类视频网站需要视频证书热门seo推广排名稳定
  • 做网站公司广州网址外链平台
  • 做美团一样的网站需要多少钱网址检测
  • 个人建什么网站比较好网络营销推广方案模板
  • 外贸网站推广哪家好陕西网站seo
  • 广州网站建设培训班东莞关键词优化推广
  • 网站下载app免费西安seo学院
  • 昆仑万维做网站千锋教育学费一览表
  • wordpress 4.9.1 主题河南seo技术教程
  • 做地方门户网站如何做企业微信会话内容存档
  • 网站加qq客服seo诊断分析工具
  • 柳州网站建设多少钱宣传产品的方式
  • 网站建设价格槽闸阀竞价托管哪家效果好
  • 10个国内建筑网站营销百度app下载手机版
  • 怎么介绍自己做的企业网站页面加盟网络营销推广公司
  • 哪些网站可以做微课seo广告投放
  • 做网站还是app宁波seo营销
  • 网站内容图片怎么做的sem是什么意思啊
  • 设计网站 杭州营销比较成功的品牌
  • 微商营销神器优化大师的功能有哪些
  • 网站服务器权限app拉新平台哪个好佣金高