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

我写了一个示例程序,其中我传递了硬编码的参数。我需要从命令行动态传递参数


package main

import (

    "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)


感谢您的输入!!


达令说
浏览 85回答 2
2回答

交互式爱情

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

绝地无双

在这里,您可以找到一种方法来读取作为参数传递给程序的命令行的参数并对其进行总结。它仅适用于INT类型,如果您传递任何其他内容,它将打印出错误。如果您输入:go run main.go 3 1 2 3它将产生:您的总和是 9package mainimport (    "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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go