为了账号安全,请及时绑定邮箱和手机立即绑定

计算传递给函数的变量数之和的程序 go

计算传递给函数的变量数之和的程序 go

Go
达令说 2022-08-15 16:30:27
我写了一个示例程序,其中我传递了硬编码的参数。我需要从命令行动态传递参数package mainimport (    "bufio"    "fmt"    "os")func main() {        str := ","    scanner := bufio.NewScanner(os.Stdin)      for scanner.Scan() {      fmt.Printf(scanner.Text()+str)     }    fmt.Println("SUM:",sum1(3,1,2,3))}func sum1(num ...int) int {     sum1 := 0     for j := range num {         sum1 += j     }     return sum1} 引用 您可以在此处尝试此代码(jdoodle.com/ia/aqw),以下是解释用于测试的样本输入(在 STDIN 输入中输入) 3 1 2 3样本输出:- 6说明:- 3 是切片的大小,元素 1、2 和 3 是计算元素总和的函数总和的输入 (1+2+3=6)感谢您的输入!!
查看完整描述

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 之旅中介绍。


查看完整回答
反对 回复 2022-08-15
?
绝地无双

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

}


查看完整回答
反对 回复 2022-08-15
  • 2 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信