美文网首页
(五)go语言数组和切片

(五)go语言数组和切片

作者: Nick_4438 | 来源:发表于2020-10-26 21:17 被阅读0次

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)
    
}

相关文章

  • Go语言切片

    // //Go语言切片 // /* // go语言切片是对数组的抽象 // Go 数组的长度不可改变,在特定场景中...

  • 七、Go切片

    七、Go语言切片(Slice) Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就...

  • (五)go语言数组和切片

    go语言数组 函数调用数组的时候 [10]int 和[20]int是不同类型调用func f (arr [10] ...

  • Go 切片和数组

    数组 go创建数组和 c 语言类似,有如下两种方式: 切片 切片声明和数组类似,只是没有传递长度 创建二维切片,并...

  • go语言 数组和切片

    新手对于数组和切片要如何区分,概念比较模糊,看看下面的说明就懂了 记住,如果在[]运算符里指定了一个值,那么创建的...

  • Go语言数组和切片

    数组 数组概念 数组就是用于保存一组相同类型的数据 定义格式 操作数组的格式 数组的初始化 (赋值) 先定义再初...

  • Go语言数组和切片

    此处数组只讲Go语言中和C语言不一样的地方 格式不同:Go语言定义数组的格式:var ages [3]int 定义...

  • Go语言-数组和切片

    1 数组的定义 定义数组常规格式是:var 数组名 [元素数量] 元素类型 = {各元素},实际使用中,可以有很多...

  • Go语言--数组和切片

    一.数组1)定义: 2)初始化 二.切片1)定义: 2)初始化: 三.区别 数组是固定大小; 切片可以扩容 四.举...

  • Go语言第3天 - 常用数据类型

    以下内容部分参考自Go语言基础数据类型Go语言中的数组切片:特立独行的可变数组Go语言数据类型-数组Go标准容器之...

网友评论

      本文标题:(五)go语言数组和切片

      本文链接:https://www.haomeiwen.com/subject/agvmmktx.html