2 回答

TA贡献1712条经验 获得超3个赞
您是要对切片索引求和,而不是对值求和。在片上,第一个值是索引,第二个值是元素:range
for i,j := range num {
// i is index, j is value
}
所以你想要:
sum1 := 0
for _,j := range num {
sum1 += j
}
return sum1
此行为在 Go 之旅中介绍。

TA贡献1946条经验 获得超4个赞
在这里,您可以找到一种方法来读取作为参数传递给程序的命令行的参数并对其进行总结。它仅适用于INT类型,如果您传递任何其他内容,它将打印出错误。
如果您输入:
go run main.go 3 1 2 3
它将产生:
您的总和是 9
package main
import (
"fmt"
"os"
"strconv"
)
func main() {
nums := getNums()
fmt.Println("Your sum is", sum(nums))
}
func getNums() []int {
nums := []int{}
args := os.Args[1:]
for i := range args {
n, err := strconv.Atoi(args[i])
if err != nil {
fmt.Println("Error during conversion from string to INT:", err)
os.Exit(1)
}
nums = append(nums, n)
}
return nums
}
func sum(nums []int) int {
sum := 0
for i := range nums {
sum += nums[i]
}
return sum
}
- 2 回答
- 0 关注
- 84 浏览
添加回答
举报