【一Go到底】第二十八天---数组实际案例与复杂应用

87 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情

一、实际案例

1.1 for循环放置数组元素

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

package main

import (
	"fmt"
)

func main() {

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

	// 定义数组
	barray := [26]byte{}
	for i := 0; i < 26; i++ {
		barray[i] = 'A' + byte(i)
	}
	for i := 0; i < 26; i++ {
		// ABCDEFGHIJKLMNOPQRSTUVWXYZ
		fmt.Printf("%c", barray[i])
	}
}


1.2 输出数组最大值及其下标

package main

import "fmt"

func main() {
	// 求出一个数组最大值,并且输出其下标

	// 声明数组

	intArr := [5]int{84, 26, 76, 194, 45}
	// 定义两个中间变量
	var index, value int
	for i, v := range intArr {
		if v > value {
			index = i
			value = v
		}
	}
	// 3 194
	fmt.Printf("%d %d", index, value)
}

1.3 求数组的和以及平均值(for-range)

package main

import "fmt"

func main() {
	// 求数组的和 以及平均值 使用for-range

	intArr := [5]int{11, 33, 22, 44, 89}

	// 定义变量
	var sum int
	// var average float64
	for _, v := range intArr {
		sum += v
	}
	fmt.Printf("intArr数组的和 = %v, 平均值 = %v\n", sum, float64(sum)/float64(len(intArr)))
}

二、数组反转

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

  1. 使用 rand.Intn() 函数生成随机数
  2. 使用 time.Now().UnixNano() 设置种子
  3. 将反转值给到新的数组
package main

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

func main() {
        // 随机生成五个数,并将其反转打印
        // 1. 使用 rand.Intn() 函数生成随机数
        // 2. 使用 time.Now().UnixNano() 设置种子
        
	// 声明数组
	intArr := [5]int{}
	// 设置Seed
	rand.Seed(time.Now().UnixNano())
	for i := 0; i < len(intArr); i++ {

		// 随机生成一个 100 以内的数
		intArr[i] = rand.Intn(100)
	}
	// intArr 数组 =  [10 89 16 41 38]
	fmt.Println("intArr 数组 = ", intArr)

	// 声明新数组
	intArr2 := [5]int{}
	// 将其反转
	for i := len(intArr) - 1; i >= 0; i-- {
		// 38 41 16 89 10
		// fmt.Printf("%v ", intArr[i])
		intArr2[len(intArr)-1-i] = intArr[i]
	}
	// intArr2 = [38 41 16 89 10]
	fmt.Println("intArr2 = ", intArr2)
}