【问题标题】:This is Calculator Program, How to code for unknown number of inputs?这是计算器程序,如何为未知数量的输入编码?
【发布时间】:2017-01-02 05:31:20
【问题描述】:

这个程序是做不同的计算。现在它只对 main 中给定的两个数字进行基本操作,我正在尝试升级它以计算超过 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))
}

【问题讨论】:

标签: go calculator


【解决方案1】:

您可以使用... 接受任意数量的争论, 这就是你的程序的样子

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

【讨论】:

  • 'go run filename.go' 命令编译并运行程序,但我找不到只编译代码并提供可执行文件 (.exe) 的命令。你知道怎么做吗? @Sarathsp
【解决方案2】:

你的问题不太清楚,所以我将做一些假设。我假设你想要一些可以做add(1, 2, 3) 的东西,它会返回1 + 2 + 3

有两种方法可以做到这一点,或者使用切片,或者使用...T 参数类型。 (参考Go specifications)。

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

func add(numbers []int) int {
    sum := 0
    for _, number := range numbers {
        sum += number
    }
    return sum
}

然后您可以像 add([]int{1, 2, 3}) 一样调用它,这将返回 1 + 2 + 3 的结果。

使用...T 参数类型几乎相同,因为它基本上将多个参数转换为一个切片。

func add(numbers ...int) int {
    sum := 0
    for _, number := range numbers {
        sum += number
    }
    return sum
}

除了调用它变得不同。要么:add(1, 2, 3),或者如果您仍想使用切片,add([]int{1, 2, 3}...)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 2022-01-03
    相关资源
    最近更新 更多