
本文介绍了在 Go 语言中如何动态初始化数组大小,并解释了数组和切片的区别。重点讲解了使用 make() 函数创建切片以实现动态大小数组的需求,并提供了示例代码和注意事项,帮助开发者更好地理解和应用切片。同时,也推荐使用 range 循环来更简洁地遍历切片。
在 Go 语言中,数组的大小在声明时必须是固定的常量。这意味着你不能直接使用从用户输入或运行时计算得到的值来定义数组的大小。如果需要在运行时确定数组的大小,你需要使用切片(slice)来代替数组。
数组和切片的区别
使用切片实现动态大小数组
要实现动态大小的数组,你需要使用 make() 函数创建一个切片。make() 函数接受两个参数:切片的类型和切片的初始长度。还可以选择性地指定切片的容量。
package main
import "fmt"
func main() {
var elems int
sum := 0
fmt.Print("Number of elements? ")
fmt.Scan(&elems)
// 使用 make() 函数创建切片
slice := make([]int, elems) // 创建一个长度为 elems 的 int 型切片
for i := 0; i < elems; i++ {
fmt.Printf("%d . Number? ", i+1)
fmt.Scan(&slice[i])
sum += slice[i]
}
mean := float64(sum) / float64(elems)
fmt.Printf("Mean: %f\n", mean)
}代码解释:
更简洁的遍历方式:使用 range
Go 语言提供了 range 关键字,可以更简洁地遍历切片。
package main
import "fmt"
func main() {
var elems int
sum := 0
fmt.Print("Number of elements? ")
fmt.Scan(&elems)
slice := make([]int, elems)
for i := range slice {
fmt.Printf("%d . Number? ", i+1)
fmt.Scan(&slice[i])
sum += slice[i]
}
mean := float64(sum) / float64(elems)
fmt.Printf("Mean: %f\n", mean)
}或者,你也可以同时获取索引和值:
package main
import "fmt"
func main() {
var elems int
sum := 0
fmt.Print("Number of elements? ")
fmt.Scan(&elems)
slice := make([]int, elems)
for i, _ := range slice { // 使用 _ 忽略值
fmt.Printf("%d . Number? ", i+1)
fmt.Scan(&slice[i])
sum += slice[i]
}
mean := float64(sum) / float64(elems)
fmt.Printf("Mean: %f\n", mean)
}注意事项:
总结
在 Go 语言中,不能直接使用变量来定义数组的大小。要实现动态大小的数组,你需要使用切片。make() 函数可以用来创建切片,range 关键字可以用来更简洁地遍历切片。 掌握切片的使用是Go语言编程的基础。
以上就是动态初始化 Go 数组大小的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号