Вам необходимо создать функцию, которая будет вводить и выводить каналы как параметры. Следует читать и писать в эти параметры. Ниже приведен пример:
main.go
package main
import (
"bufio"
"fmt"
"io"
"os"
"strconv"
)
func main() {
var f *os.File
f = os.Stdin
defer f.Close()
run (os.Stdin, f)
}
func run(in io.Reader, out io.Writer) {
scanner := bufio.NewScanner(in)
for scanner.Scan() {
if scanner.Text() == "STOP" || scanner.Text() == "stop" {
break
}
n, err := strconv.ParseInt(scanner.Text(), 10, 64)
if err == nil {
fmt.Printf("Number formatted: %d\n", n)
} else {
fmt.Println(err.Error())
}
}
}
main_test.go
package main
import (
"bytes"
"fmt"
"testing"
)
func TestRun(t *testing.T){
var command, result bytes.Buffer
fmt.Fprintf(&command, "10\n")
fmt.Fprintf(&command, "stop\n")
run(&command, &result)
got := result.String()
//test for contents of "got"
fmt.Println(got)
}
Теперь вы можете запустить следующую команду в командной строке.
go test