• 01-go基础-05-数组(声明数组、数组赋值、遍历数组、数组值修改)


    1. 声明数组

    - 语法

    • 语法
    var arrayName [N]type
    
    • 1
    • 语法示例
    var names [3]string
    
    • 1

    - 完整示例

    package main
    
    import (
    	"fmt"
    	"reflect"
    )
    
    func main() {
    	var names [3]string
    	fmt.Printf("变量 names 类型为:%q\n打印结果:%+v\n长度为:%d",reflect.TypeOf(names),names,len(names))
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    结果

    变量 names 类型为:"[3]string"
    打印结果:[  ]
    长度为:3
    
    • 1
    • 2
    • 3

    2. 数组赋值

    - 语法

    • 语法
    var arrayName = [N]type{valu1,valu2,valu3……}
    
    • 1

    在函数中可以写做

    arrayName := [N]type{valu1,valu2,valu3……}
    
    • 1
    • 语法示例
    names := [3]string{"刘备","关羽","张飞"}
    
    • 1

    可以写做

    var names [3]string
    names = [3]string{"刘备","关羽","张飞"}
    
    • 1
    • 2

    也可以写做:

    var names [3]string
    names = [...]string{"刘备","关羽","张飞"}
    
    • 1
    • 2

    但是成员数和定义的长度一定要一致,否则报错。

    - 完整示例

    • 代码
    package main
    import "fmt"
    
    func main() {
    	names := [3]string{"刘备","关羽","张飞"}
    	fmt.Printf("数组为:%+v\n长度为:%d\n",names,len(names))
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 结果
    数组为:[刘备 关羽 张飞]
    长度为:3
    
    • 1
    • 2

    - 未赋值的元素仍为默认值

    如下,我们赋值时给长度为3的数组传入两个元素,则第三个元素仍为默认值(int 默认值为0)

    • 代码
    package main
    import "fmt"
    
    func main() {
    	arrayInt := [3]int{66,166}
    	fmt.Printf("数组为:%+v\n长度为:%d\n",arrayInt,len(arrayInt))
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 结果
    数组为:[66 166 0]
    长度为:3
    
    • 1
    • 2

    3. 数组元素赋值

    - 语法

    arrayName[N] = valueN
    
    • 1
    • 语法示例
    names[0] = "刘备"
    
    • 1

    - 示例

    • 代码
    package main
    
    import "fmt"
    
    func main() {
    	var names [3]string
    	fmt.Printf("=================\n数组为:%+v\n长度为:%d\n",names,len(names))
    	names[0] = "刘备"
    	fmt.Printf("=================\n数组为:%+v\n长度为:%d\n",names,len(names))
    	names[2] = "张飞"
    	fmt.Printf("=================\n数组为:%+v\n长度为:%d\n",names,len(names))
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 结果
    =================
    数组为:[  ]
    长度为:3
    =================
    数组为:[刘备  ]
    长度为:3
    =================
    数组为:[刘备  张飞]
    长度为:3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4. 数组访问

    4.1 访问数组中元素

    • 代码
    package main
    
    import "fmt"
    
    func main() {
    	names := [3]string{"刘备","关羽","张飞"}
    	fmt.Println(names[0])
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 结果
    刘备
    
    • 1

    4.2 遍历数组

    • 代码
    package main
    
    import "fmt"
    
    func main() {
    	names := [3]string{"刘备","关羽","张飞"}
    	for num,name := range names{
    		fmt.Printf("第%d个元素是:  %q\n",num,name)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 结果
    0个元素是:  "刘备"1个元素是:  "关羽"2个元素是:  "张飞"
    
    • 1
    • 2
    • 3

    5. 数组的修改

    5.1 修改全部数组元素值

    数组直接等于一个长度相等的数组,则全部值都改变。(长度不相等的数组会报错)

    • 代码
    package main
    import "fmt"
    
    func main() {
    	names := [3]string{"刘备","关羽","张飞"}
    	fmt.Printf("原数组为:%+v\n",names)
    	names = [3]string{"孙权","周瑜","黄盖"}
    	fmt.Printf("修改后数组为:%+v\n",names)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 结果
    原数组为:[刘备 关羽 张飞]
    修改后数组为:[孙权 周瑜 黄盖]
    
    • 1
    • 2
    • 修改时,若长度为3的数组只传入2个元素,未传入值的元素将修改为默认值

    5.2 修改单个元素值

    • 代码
    package main
    import "fmt"
    
    func main() {
    	names := [3]string{"刘备","关羽","张飞"}
    	fmt.Printf("原数组:%+v\n",names)
    	names[0]="刘玄德"
    	fmt.Printf("修改后:%+v\n",names)
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 结果
    原数组:[刘备 关羽 张飞]
    修改后:[刘玄德 关羽 张飞]
    
    • 1
    • 2

    5.3 数组长度不可以更改

    没有示例,怎么改都会报错


  • 相关阅读:
    mikumikumoving 一些插件记录
    入门力扣自学笔记124 C++ (题目编号641)
    四川思维跳动商务信息咨询有限公司是真的吗?
    关于crypto1_bs
    Redis 的五大基本数据类型操作
    分享几个查看操作系统版本信息的方法
    Iverson bracket
    ConnectionError: HTTPSConnectionPool
    NCV7705DQAR2G 汽车电机驱动器(NCV7705DQR2G)引脚配置
    springboot打成war包
  • 原文地址:https://blog.csdn.net/xingzuo_1840/article/details/128140652