这是计算器程序,如何编码未知数量的输入?

时间:2017-01-02 05:31:20

标签: go calculator

这个程序是做不同的计算。现在它只对主要给出的两个数字进行基本操作,我尝试升级它来计算超过2个数字,更像是未知数量的输入中给出的数字。

package main

import (
    "fmt"
)

func add (n int , m int) int {
     sum := n + m
     return sum
}
func sub (n int , m int) int {
     diff := n - m
     return diff
}
func mul (n float32 , m float32) float32 {
     pro := n * m
     return pro
}

func div (n float32 , m float32) float32 {
     quo := n / m
     return quo
}

func main() {
    fmt.Println(add(4,6))
    fmt.Println(sub(4,6))
    fmt.Println(mul(4,6))
    fmt.Println(div(6,4))
}

2 个答案:

答案 0 :(得分:2)

您可以使用...来接受仲裁的仲裁数量, 这是你的程序将如何

package main

import (
    "fmt"
)

func add(m ...int) int {
    sum := 0
    for _, i := range m {
        sum += i
    }
    return sum
}
func sub(m ...int) int {
    sub := m[0]
    for _, i := range m[1:] {
        sub -= i
    }
    return sub
}
func mul(m ...float32) float32 {
    c := float32(1)
    for _, i := range m {
        c *= i
    }
    return c
}
func div(m ...float32) float32 {
    quo := m[0]
    for _, i := range m[1:] {
        quo /= i
    }
    return quo
}

func main() {
    fmt.Println(add(4, 6))
    fmt.Println(sub(4, 6))
    fmt.Println(mul(4, 6))
    fmt.Println(div(6, 4))
}

以下是播放链接:https://play.golang.org/p/dWrMa-GdGj

答案 1 :(得分:0)

你的问题不太清楚,所以我要做一些假设。我假设你想要一些可以返回add(1, 2, 3)的{​​{1}}。

有两种方法可以使用切片或使用1 + 2 + 3参数类型。 (请参阅Go specifications)。

使用切片的实现将接受一片数字,然后使用迭代方法对切片执行操作。例如,对于添加功能:

...T

然后您可以将其称为func add(numbers []int) int { sum := 0 for _, number := range numbers { sum += number } return sum } ,它将返回1 + 2 + 3的结果。

使用add([]int{1, 2, 3})参数类型几乎相同,因为它基本上将多个参数转换为切片。

...T

除了呼叫它变得不同。要么:func add(numbers ...int) int { sum := 0 for _, number := range numbers { sum += number } return sum } ,要么仍然想要使用切片,add(1, 2, 3)

您应该能够将这些概念应用于其他操作。