【第二十七篇】Go 数组

99 阅读2分钟

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

一、数组的使用价值:

一、为什么需要数组?

一、问题:

一个养鸡场有6只鸡,它们的体重分别是 3KG 、5KG、1KG、3.4KG、2KG、50KG。请问这六只鸡的总体重是多少?平均体重是多少?请你编写一个程序。

二、使用传统方法解决:

package main

import (
	"fmt"
)

func main() {
	// 传统方法来解决问题:
	// 1. 定义六个变量,分别来表示六只鸡的体重,然后求和求平均值
	hen1 := 3.0
	hen2 := 5.0
	hen3 := 1.0
	hen4 := 3.4
	hen5 := 2.0
	hen6 := 50.0
	totalWeight := hen1 + hen2 + hen3 + hen4 + hen5 + hen6

	// fmt.Sprintf("%.2f".totalWeight / 6) 将 totalWeight / 6 四舍五入保留到小数点2返回值
	avgWeight := fmt.Sprintf("%.2f", totalWeight/6)

	fmt.Printf("totalWeight=%v , avgWeight=%v", totalWeight, avgWeight)
}

对上面代码的说明:

  1. 使用传统的方法不利于数据的管理和维护
  2. 传统的方法不够灵活,因此我们引出需要学习的新的数据类型 ===> 数组

二、数组的快速入门:

一、数组介绍:

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

二、数组快速入门:

比如,我们可以用数组来解决上一个问题。

package main

import (
	"fmt"
)

func main() {
	// 传统方法来解决问题:
	// 1. 定义六个变量,分别来表示六只鸡的体重,然后求和求平均值
	hen1 := 3.0
	hen2 := 5.0
	hen3 := 1.0
	hen4 := 3.4
	hen5 := 2.0
	hen6 := 50.0
	totalWeight := hen1 + hen2 + hen3 + hen4 + hen5 + hen6

	// fmt.Sprintf("%.2f".totalWeight / 6) 将 totalWeight / 6 四舍五入保留到小数点2返回值
	avgWeight := fmt.Sprintf("%.2f", totalWeight/6)

	fmt.Printf("totalWeight=%v , avgWeight=%v", totalWeight, avgWeight)

	fmt.Printf("\n")

	// 使用数组的方法来解决问题:
	// 1. 先定义一个数组
	var hens [6]float64
	// 2. 初始化数组,给每个元素赋值:元素的下标是从0开始的 0-5
	hens[0] = 3.0
	hens[1] = 5.0
	hens[2] = 1.0
	hens[3] = 3.4
	hens[4] = 2.0
	hens[5] = 50.0

	// 3. 遍历数组求出总体重
	totalWeight2 := 0.0
	for i := 0; i < len(hens); i++ {
		totalWeight2 += hens[i]
	}

	// 4. 求出平均体重
	avgWeight2 := fmt.Sprintf("%.2f", totalWeight2/6)
	fmt.Printf("totalWeight2=%v , avgWeight2=%v", totalWeight2, avgWeight2)
}

对上面代码的总结:

  1. 使用数组来解决问题,程序的可维护性增加
  2. 而且方法代码更加清晰,也容易扩展,数据的可维护性增加。