go数组的应用案例

本文通过四个实例展示了Go语言中数组的创建、遍历、查找最大值及其下标、计算平均值以及数组反转的操作。在代码实现中,详细解释了每个步骤的逻辑和思路,涉及到了字符运算、循环比较、求和与平均值计算以及数组反转的技巧。这些实例有助于理解Go语言的基础数据类型和算法应用。
摘要由CSDN通过智能技术生成

一 创建一个 byte 类型的 26 个元素的数组,分别 放置'A'-'Z'。使用 for 循环访问所有元素并打印出来。提示:字符数据运算 'A'+1 -> 'B'

1 代码

package main

import (
   "fmt"
)

func main() {
   // 创建一个 byte 类型的26个元素的数组,分别放置'A'-'Z‘。
   // 使用 for 循环访问所有元素并打印出来。提示:字符数据运算 'A'+1 -> 'B'
   // 思路
   // 1 声明一个数组 var myChars [26]byte
   // 2 使用 for 循环,利用字符可以进行运算的特点来赋值 'A'+1 -> 'B'
   // 3 使用 for 打印
   var myChars [26]byte
   for i := 0; i < 26; i++ {
      myChars[i] = 'A' + byte(i) // 注意需要将 i => byte
   }

   for i := 0; i < 26; i++ {
      fmt.Printf("%c ", myChars[i])
   }
}

2 测试

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

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

1 代码

package main

import "fmt"

func main() {
   // 请求出一个数组的最大值,并得到对应的下标
   // 思路
   // 1 声明一个数组 var intArr[5] = [...]int {1, -1, 9, 90, 11,9000}
   // 2 假定第一个元素就是最大值,下标就0
   // 3 然后从第二个元素开始循环比较,如果发现有更大,则交换
   fmt.Println()
   var intArr [6]int = [...]int{1, -1, 9, 90, 11, 9000}
   maxVal := intArr[0]
   maxValIndex := 0
   for i := 1; i < len(intArr); i++ {
      // 然后从第二个元素开始循环比较,如果发现有更大,则交换
      if maxVal < intArr[i] {
         maxVal = intArr[i]
         maxValIndex = i
      }
   }
   fmt.Printf("maxVal=%v maxValIndex=%v\n\n", maxVal, maxValIndex)
}

2 测试

maxVal=9000 maxValIndex=5

三 请求出一个数组的和和平均值。要求使用 for-range。

1 代码

package main

import "fmt"

func main() {
   // 求出一个数组的和和平均值。要求使用 for-range
   // 思路
   // 1 声明一个数组  var intArr[5] = [...]int {1, -1, 9, 90, 11}
   // 2 求出和sum
   // 3 求出平均值
   var intArr2 [5]int = [...]int{1, -1, 9, 90, 12}
   sum := 0
   for _, val := range intArr2 {
      // 累计求和
      sum += val
   }
   // 如何让平均值保留到小数.
   fmt.Printf("sum=%v 平均值=%v \n\n", sum, float64(sum)/float64(len(intArr2)))
}

2 测试

sum=111 平均值=22.2

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

1 代码

package main

import (
   "fmt"
   "math/rand"
   "time"
)

func main() {
   // 要求:随机生成五个数,并将其反转打印
   // 思路
   // 1 随机生成五个数 , rand.Intn() 函数
   // 2 当我们得到随机数后,就放到一个数组 int数组
   // 3 反转打印 , 交换的次数是  len / 2, 倒数第一个和第一个元素交换, 倒数第2个和第2个元素交换
   var intArr3 [5]int
   // 为了每次生成的随机数不一样,需要给一个 seed 值
   len := len(intArr3)
   rand.Seed(time.Now().UnixNano())
   for i := 0; i < len; i++ {
      intArr3[i] = rand.Intn(100) // 0<=n<100
   }
   fmt.Println("交换前=", intArr3)
   // 反转打印 , 交换的次数是  len / 2,
   // 倒数第一个和第一个元素交换, 倒数第2个和第2个元素交换
   temp := 0 // 临时变量
   for i := 0; i < len/2; i++ {
      temp = intArr3[len-1-i]
      intArr3[len-1-i] = intArr3[i]
      intArr3[i] = temp
   }
   fmt.Println("交换后=", intArr3)
}

2 测试

交换前= [50 72 46 75 77]
交换后= [77 75 46 72 50]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值