Третий день. Пойдите, простите, если это новый вопрос;). Я создаю простой калькулятор, который в конечном итоге будет иметь множество разных задач: сложение, вычитание, умножение и т. Д. И т. Д. Каждая из задач будет иметь 2 функции: первый и второй.Как проверить функции интерфейса?
package main
import (
"github.com/mytestproj/calculator"
)
type Calc interface {
First(x int) int
Second(x int) int
}
func main() {
x := 16
var i Calc
a := calculator.Add{}
i = a
i.First(x)
i.Second(x)
}
Я в настоящее время есть все организовано как:
github.com/
mytestproj/
calculator/
addition.go
addition_test.go
subtraction.go
subtraction_test.go
main/
main.go
В addition.go у меня есть:
package calculator
type Add struct{}
func BasicAddition(x int) int { // this won't be in the final release
return x + 2
}
func (h Add) First(x int) int {
x += 5
return x
}
func (h Add) Second(x int) int {
x += 10
return x
}
И в addition_test.go у меня есть:
package calculator
import "testing"
func TestBasicAddition(t *testing.T) {
x := 30
if y := BasicAddition(x); y != 32 {
t.Errorf("Mine is %v", y)
}
}
func TestFirst(t *testing.T) {
x := 10
if y := First(x); y != 15 {
t.Errorf("First is %v", y)
}
}
Когда я запускаю свой тест, я получаю сообщение об ошибке:
# github.com/mytestproj/calculator
./addition_test.go:15: undefined: First
FAIL github.com/mytestproj/calculator [build failed]
Мой вопрос: Как проверить "в первую очередь?"
Если я удаляю тест для First полностью, тесты проходят нормально и проходят.
Вторичный вопрос: идея заключается в создании калькулятора с множеством различных функций. Если есть лучший способ организовать код, то, пожалуйста, дайте мне знать.