Go---数组

本文详细介绍了Go语言中的数组定义、初始化、遍历、操作以及注意事项。通过示例展示了如何创建、赋值、遍历数组,以及如何找到数组的最大值和计算平均值。还探讨了数组作为值类型的特点,以及如何通过指针在函数中修改数组。最后,通过实例演示了数组反转的实现。
摘要由CSDN通过智能技术生成

数组

数组可以存放多个同一类型数据。数组也是一种数据类型,在Go中,数组是值类型

   //定义一个数组

    var hei [3]float64

    //给数组中每个元素赋值,元素的下标是从0开始的

    hei[0] = 0.2

    hei[1] = 1.2

    hei[2] = 2.2

    //遍历数组

    sum := 0.0

    for i:=0; i<len(hei); i++{

        sum += hei[i]

    }

    fmt.Println(sum)

数组的定义
var 数组名  [数组大小]数据类型   
  var hei [3]float64
赋初值   hei[0] = 0.2 ....

数组的使用

//从终端输入五个成绩,保存到float60数组,并输出

    var score  [5]float64

    for i := 0;i<len(score);i++{

       fmt.Printf("请输入第%d个元素的值", i+1)

       fmt.Scanln(&score[i])

    }

    fmt.Println(score)

    //输出

    for i:=0; i<len(score); i++{

        fmt.Println(score[i])

    }

四种初始化数组的方式

    var num1 [2]int = [2]int{2,2}

    var num2 = [2]float64{2.2,2.3}

    //[...]固定的写法

    var num3 = [...]int{6,5,4}

    var num4 = [...]string{1:"you",2:"are"}

     num5 := [...]string{0:"my",1:"friend"}

for-range结构遍历
这是Go语言一种独有的结构,可以用来遍历访问数组的元素。

基本语法
for index, value := range array01 {

..........

}

1) 第一个返回值 index 是数组的下标

2) 第二个 value 是在该下标位置的值
3) 他们都是仅在for循环内部可见的局部变量
4) 遍历数组元素的时候,如果不想使用下标 index,可以直接把下标 index 标为下划线_
5)  index 和value 的名称不是固定的,即可以自行指定,一般命名为index和 value

boys := [...]string{"蜘蛛侠","钢铁侠","蝙蝠侠"}

    for index,value := range boys{

        fmt.Printf("index=%v  value=%v  \n",index,value)

    }

    for _,value := range boys{

        fmt.Printf(" value=%v  \n",value)

    }

数组使用注意事项和细节

1)  数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化。 

 2) var arr []int 这时 arr 就是一个slice切片.
3)  数组中的元素可以是任何数据类型,包括值类型和引用类型,但是不能混用

4) 数组创建后,如果没有赋值,有默认值
    数值类型数组: 默认值为o
    字符串数组:  默认值为""

     bool数组:   默认值为false
5) 使用数组的步骤1: 声明数组并开辟空间 2 : 给数组各个元素赋值 3 : 使用数组

6) 数组的下标是从0开始的
7) 数组下标必须在指定范围内使用,否则报panic: 数组越界,比如var arr [5]int 则有效下标为0-4
8) Go的数组属值类型,在默认情况下是值传递,因此会进行值拷贝。数组间不会相互影响

9) 如想在其它函数中,去修改原来的数组,可以使用引用传递(指针方式)

10) 长度是数组类型的一部分,在传递函数参数时需要考虑数组的长度。

//1)创建一个byte类型的26个元素的数组,分别放置"A'-'Z5。

    //使用for循环访问所有元素并打印出来。提示:字符数据运算‘A'+1 ->‘B’

    var CharC [26]byte

    for i:=0 ;i<len(CharC);i++{

        CharC[i] = 'A' + byte(i)

    }

    //输出

    for i:=0;i<len(CharC);i++{

        fmt.Printf("%c  ",CharC[i])

    }

    //请求出一个数组的最大值,并得到对应的下标

    var arr = [...]int{88,69,96,0,-1}

    max := arr[0]

    maxIndex := 0

    for i :=0 ;i<len(arr);i++ {

     

        if arr[i] > max {

            max = arr[i]

            maxIndex =i

        }

    }

  fmt.Printf("\n 最大值为%d,最大值下标%d",max,maxIndex)

  //请求出一个数组的和和平均值。for-range

  var arr2 = [...]int{8,6,9,15,-1}

  sum := 0

  for _,value := range arr2{

    sum += value

    }

    fmt.Printf(" \n 和为:%d,平均值为:%v",sum,float64(sum)/float64(len(arr2)))

数组复杂使用-数组反转

//随机生成五个数,并将其反转打印

var arr3 [5]int

len := len(arr3)

//为了每次生成的随机数不一样,我们需要给一个seed值

rand.Seed(time.Now().UnixNano())

for i:=0;i<len;i++{

    arr3[i] = rand.Intn(100) //0<=n<100

}

fmt.Println("before",arr3)

//反转打印

temp :=0

for i:=0;i<len/2;i++{

    temp =arr3[len-1-i]

    arr3[len-1-i]=arr3[i]

    arr3[i] = temp

}

fmt.Println("after",arr3)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值