var clear map[string]func()
To handle OS specific implementations you may consider using Golang tags feature. See it in action:
flashcard_windows.go
// +build windows
package main
import(
"os"
"os/exec"
)
func Clear() {
cmd := exec.Command("cmd", "/c", "cls")
cmd.Stdout = os.Stdout
cmd.Run()
}
flashcard_unix.go
// +build linux
package main
import(
"os"
"os/exec"
)
func Clear() {
cmd := exec.Command("clear")
cmd.Stdout = os.Stdout
cmd.Run()
}
To build run go build
with -tags windows
or -tags linux
arguments.
Now there is no need call panic()
. go build
will exit if implementation of Clear
function is missing.
See this for more information.