开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:数组应用案例(2)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9633
数组应用案例(2)
一、数组应用案例及解决方法
数组应用案例
1.创建一个 byte 类型的26个元素的数组,分别放置'A'-Z'。使用 for 循环访问所有元素并打印出来。提示:字符数据运算‘A'+1->'B'
2.请求出一个数组的最大值,并得到对应的下标。
3.请求出一个数组的和和平均值。for-range
//求出数组的和,以及和的平均值
4.细节:
(1)要求使用 for-range
(2)求平均值时需要注意,如果数组是整数,那么在求平均值时,本身是可以精确到小数点的,但是默认情况下返回的可能也是整数,就导致平均值会出现错误。
解:
5.思路
//(1)就是声明一个数组 var intArr[5] = [ ...]int {1,-1,9,90,11}
//(2)求出和 sum
//(3)求出平均值
6.代码:
(1)var intArr2[5]int = [...]int [1,-1,9, 90,12]
//首先定义一个 int 数组
sum := 0 //定义一个变量默认为0
for _,val := range intArr2 {
//对 intArr2数组进行遍历,要求使用 for-range,此问题中只需要值,而不需要下标,所以使用下划线_将下标返回值忽略
sum+= val
//累计求和
}
fmt.Printf("sum=%v平均值=%v", sum,sum/ len(intArr2))
}
运行效果如下:
sum=110 平均值=22
可以发现总和等于110,没有问题,而平均值为22也没有错误
(2)要使平均值结果出现一个小数,则需要改一个值:var intArr[5] = [ ...]int {1,-1,9,90,12}
运行结果如下:
Sum=111 平均值=22
数组和的值为111,没有错误,此处平均值应该为22.2,但运行出来的平均值仍然为22,与实际平均值不匹配,应该保留小数点。
//是因为 sum 是一个整数类型,而 intArr2也是一个整数类型,根据 go 语言的运算规则,当都为 int 类型的时候,结果也会是 int 类型的值。
(3)如何让平均值保留到小数。
将数据类型进行转换即可:
fmt.Printf("sum=%v平均值=%v", sum,float64(sum)/float64( len
(intArr2)))
需要将类型统一为 float64,否则会报错
注意:go 语言对数据类型的要求是强制转换的,而有些数据类型是有一个默认转换精度的,但是 go 语言的数据类型的转换,没有默认转换的规则。
运行结果如下:
Sum=111 平均值=22.2
可以发现平均值已经保留到小数点,正确。