2
這是我帶Go的第一週,所以請原諒無知;)。我從Python中安然無恙。我正在構建一個簡單的帶有加法和減法的計算器。如何動態遍歷一個包?
我addition.go
文件看起來像這樣:
package calculator
type Add struct{}
func (h Add) First(x int) int {
x += 5
return x
}
func (h Add) Second(x int) int {
x += 10
return x
}
我subtraction.go
文件的佈局看起來非常相似,addition.go
和未來的功能,如multiplication.go
和division.go
將類似於。要運行這些我:
package main
import (
"fmt"
"github.com/mytester/calculator"
)
type Calc interface {
First(x int) int
Second(x int) int
}
func main() {
x := 10
var i Calc
a := &calculator.Add{}
i = a
i.First(x)
fmt.Println(x)
fmt.Println(i.First(x))
fmt.Println(i.Second(x))
fmt.Println("Next method...")
b := &calculator.Sub{}
i = b
fmt.Println(x)
fmt.Println(i.First(x))
fmt.Println(i.Second(x))
// iterate through the rest of my calculator methods
}
這似乎很繁瑣,特別是我添加越來越多的功能,如乘法,等有沒有辦法找到我的計算器的所有方法&然後遍歷所有的人?我已經瀏覽了reflect
文檔,但似乎沒有辦法解決這個問題。它們的運行順序無關緊要。例如,減法可以在添加之前運行。