(五)go语言数组和切片
【摘要】 go语言数组
package main
import "fmt"
func main() { var arr1 [] int //初始化 arr2 := [3]int {1,2,5} //编译器来确定个数 arr3 := [...]int {2,3,4,6,7} //二位数组 var grid[4][5] int fmt.Println(arr1) fmt.Println...
go语言数组
package main
import "fmt"
func main() { var arr1 [] int //初始化 arr2 := [3]int {1,2,5} //编译器来确定个数 arr3 := [...]int {2,3,4,6,7} //二位数组 var grid[4][5] int fmt.Println(arr1) fmt.Println(arr2) fmt.Println(arr3) fmt.Println(grid) //数组遍历方法1 fmt.Println("..........arr3:",arr3) for i:=0 ; i<len(arr3);i++{ fmt.Println(arr3[i]) } //数组遍历方法2 fmt.Println("..........arr3:",arr3) for i,v := range arr3 { fmt.Println(i, v) } //数组遍历方法3,省略变量 fmt.Println("..........arr3:",arr3) for _,v := range arr3 { fmt.Println(v) } //数组遍历方法3,省略变量 fmt.Println("..........arr3:",arr3) for _,v := range arr3 { fmt.Println(v) }
}
函数调用数组的时候 [10]int 和[20]int是不同类型
调用func f (arr [10] int)会拷贝
数组
go语言一般不直接使用数组,而是使用切片
go语言切片
- 切片本身没有数据,切片是对底层数据的一个view
- 改变切面数据内容的值,底层数据的值也会改变
- slice可以嵌套多层使用
s := arr[2:6]
s = s[:3]
s = s[1:]
底层结构
[图片上传失败...(image-c0294c-1603718212405)]
[图片上传失败...(image-ea0069-1603718212405)]获取slice的长度和容量
fmt.Printf("s3=%v, len(s3)=%d, cap(s3)=%d",s3,len(s3),cap(s3))
- append可以在slice后面加数据
例子
package main
import ( "fmt"
)
func printSlice(s [] int) { fmt.Printf("%v, len=%d,cap=%d\n",s, len(s),cap(s))
}
func main() { //创建slcie var s [] int //Zero value for slice is nil for i:=0 ; i<100 ; i++ { printSlice(s) s = append(s, 2 * i + 1) } fmt.Println(s) s1 := [] int {2,4,6,8} printSlice(s1) //使用内置函数创建slice s2 := make([]int ,16) s3 := make([]int ,16,20) printSlice(s2) printSlice(s3) fmt.Println("copy slice") // slice拷贝 copy(s2,s1) fmt.Println(s2) fmt.Println("delete element from slice ") //删除掉第三个元素 s2 = append(s2[:3] ,s2[4:]...) printSlice(s2) //从头删除 font := s2[0] s2 = s2[1:] fmt.Println("font=",font) printSlice(s2) //从尾巴删除 tail := s2[len(s2)-1] s2 = s2[:len(s2)-1] fmt.Println("tail=",tail) printSlice(s2) }
文章来源: www.jianshu.com,作者:Nick_4438,版权归原作者所有,如需转载,请联系作者。
原文链接:www.jianshu.com/p/7982a9375223
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)