2.Golang数组常见操作(哪里不对,请多多指点)

三人行大道 · · 1220 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

1.简单声明数组
2.声明数组并同时赋初值
3.声明数组并同时赋初值,并自动计算长度
4.数组元素的访问与修改
5.数组元素的默认值
6.定义数组元素的初始值
7.数组是值类型(证明)
8.new一个数组(本人还没有学到)
9.[存放]指针的数组(本人还没有学到)

数组,存放元素的容器,必须指定存放的元素的类型和容量(长度)
数据是一个固定长度的数据类型,用户存储一段具有<<相同类型>>的元素的<<连续快>>。数据存储的类型可以使内置类型。整形 字符串 或某种机构类型
占用内存方式为<<连续分配>>。由于内存连续,CPU能把正在使用的数据缓存更久的时间。并且因为内存连续所以索引很容易计算,可以快速迭代数组中所有的元素

数组的特点

1.数组是值类型
2.var 数组名 [数组大小]数据类型 ==》变量名,长度,类型
3.数组,存放元素的容器,必须指定存放的元素的类型和容量(长度)
数组长度是数组类型的一部分
声明数组: 指定内部存储的数据类型、需要存储的数据数量(长度)
相同类型的的数组可以进行 ==与!=的比较操作,(长度也算)

    //1.数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的, 不能动态变化
    //2. var arr []int 这时 arr 就是一个 slice 切片,切片后面专门讲解,不急哈.
    //3. 数组中的元素可以是任何数据类型,包括值类型和引用类型,但是不能混用。
    //4. 数组创建后,如果没有赋值,有默认值(零值)
    //5. 使用数组的步骤 1. 声明数组并开辟空间 2 给数组各个元素赋值(默认零值) 3 使用数组
    //6. 数组的下标是从 0 开始的
    //7. 数组下标必须在指定范围内使用,否则报 panic:数组越界,比如
    //8. Go的数组属值类型,在默认情况下是值传递,因此会进行值拷贝。数组间不会相互影响
    //9.长度是数组类型的一部分,在传递函数参数时 需要考虑数组的长度

数组的声明和初始化

var numArr02 = [3]int{5,6,7}
fmt.Println("numArr02", numArr02)



    // 数组初始化(2)根据初始化值自动推断数组的长度是多少
    a10 := [...]int{0, 1, 2, 3, 4, 5, 5, 6}
    fmt.Println(a10)

        var numArr03 = [...]int{8,9,10}
        fmt.Println("numArr03", numArr03)

        var numArr04 = [...]int{1:800, 0:900, 2:999}
        fmt.Println("numArr04", numArr04)
      


    // 初始化方式(3),根据索引初始化
    a3 := [5]int{0: 1, 4: 2} //索引为0的值为1,索引为4的值为2
    fmt.Println(a3)

        strArr := [...]string{1:"tom", 0:"jack", 2:"xiaox"}  
        fmt.Println("strArr", strArr)


数组是值类型

// 数组是值类型
    b1 := [3]int{1, 2, 3}
    b1[0] = 1000000000
    b2 := b1
    b2[0] = 100
    fmt.Println(b1, b2)

遍历数组

这里的len是内置函数,返回数组长度
citys := [...]string{"北京", "上海", "深圳"} //索引从0-2
    // 1 根据索引遍历
    for i := 0; i < len(citys); i++ {
        fmt.Println(citys[i])
    }

    // 2 for range 遍历
    // i 是索引,v是值
    for i, v := range citys {
        fmt.Println(i, v)
    }

     //数组遍历
    //常规遍历
    //for range遍历
    //这是 Go 语言一种独有的结构,可以用来遍历访问数组的元素。
    //for--range的基本语法
    //1. 第一个返回值index是下标
    //2. 第二个返回值value是该下标位置的值
    //3. 他们都是for循环内部可见的变量
    //4. 如果不想使用index可以使用_代替
    //5. index和value可以取其他名字

遍历多维数组

//声明多维数组
all = [3][2]int{
        [2]int{1, 2},
        [2]int{3, 4},
        [2]int{5, 6},
    }

// 遍历多维数组
    for _, v1 := range all {
        fmt.Println(v1)
        for _, v2 := range v1 {
            fmt.Println(v2)
        }
    }

    

访问

访问单个元素使用运算符[]
array := [5] int {1,2,3,4,5}
//获取索引为2的值
array[2]
//修改索引为2的值
array[2] = 10

同类型数组赋值

//声明一个包含五个整型元素的数组
arr1 := [5] int {1,2,3,4,5}
//声明一个包含五个整型元素的数组
arr2 := [5] int {}
//把arr1的值赋给arr2
arr2 = arr1
//赋值条件两个数组的长度和每个元素的类型必须都相同才能进行赋值。否则编辑器会报错

声明一个数组长度是2,容量也是2,
没有给赋值,
int,float类型的默认值都是0
string,默认值是 ""
bool 默认值是 false

ss := [2]int{} // 没有给赋值,int,float类型的默认值都是0

var myArr [3]int = [3]int{1,2,3}
test01(myArr)

练习

1.求数组[1,3,5,7,8]所有元素之和
2.找出数组中和为指定值的两个元素的下标,
比如从数组[1,3,5,7,8]中找出和为8的两个元素的下表分别为(0,3),(1,2)
3.创建一个 byte 类型的 26 个元素的数组,分别 放置'A'-'Z‘。使用 for 循环访问所有元素并打印出来。提示:字符数据运算 'A'+1 -> 'B'
4.请求出一个数组的最大值,并得到对应的下标。
intArr := [...]int{12, 4, 45, 56, 98, 56}
5.随机生成五个数,并将其反转打印

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:三人行大道

查看原文:2.Golang数组常见操作(哪里不对,请多多指点)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1220 次点击  
加入收藏 微博
上一篇:leetcode_409
下一篇:leetcode_392
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传