这是计算器程序,如何为未知数量的输入编码?
This is Calculator Program, How to code for unknown number of inputs?
这个程序是做不同的事情 calculations.right 现在它只对 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))
}
您可以使用 ...
接受任意数量的参数,
这就是你的程序将如何
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))
}
开始玩 link : https://play.golang.org/p/dWrMa-GdGj
你的问题不是很清楚,所以我会做一些假设。我假设你想要的东西可以 add(1, 2, 3)
return 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})
那样调用它,这将 return 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}...)
.
您应该能够将这些概念应用到您的其他操作中。
这个程序是做不同的事情 calculations.right 现在它只对 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))
}
您可以使用 ...
接受任意数量的参数,
这就是你的程序将如何
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))
}
开始玩 link : https://play.golang.org/p/dWrMa-GdGj
你的问题不是很清楚,所以我会做一些假设。我假设你想要的东西可以 add(1, 2, 3)
return 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})
那样调用它,这将 return 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}...)
.
您应该能够将这些概念应用到您的其他操作中。