package main
import "flag"
import "os"
import "strconv"
const NEWLINE string = "\n"
var (addFlag = flag.Bool("a", false, `add a and b`);
subFlag = flag.Bool("s", false, `subtract b to a`);
mulFlag = flag.Bool("m", false, `multiply a and b`);
divFlag = flag.Bool("d", false, `divide b from a`);
helpFlag = flag.Bool("help", false, `this help`))
func add(a, b int) int {
return a + b
}
func subtract(a, b int) int {
if a >= b {return a - b}
return -1
}
func multiply(a, b int) int {
return a * b
}
func divide(a, b int) int {
if b != 0 {
return a / b
}
return -1
}
func main() {
flag.Parse()
a, errA := strconv.Atoi(flag.Arg(0))
if errA != nil {a = -1}
b, errB := strconv.Atoi(flag.Arg(1))
if errB != nil {b = -1}
if *addFlag {
os.Stdout.WriteString(strconv.Itoa(add(a, b)) + NEWLINE)
} else if *subFlag {
os.Stdout.WriteString(strconv.Itoa(subtract(a, b)) + NEWLINE)
} else if *mulFlag {
os.Stdout.WriteString(strconv.Itoa(multiply(a, b)) + NEWLINE)
} else if *divFlag {
os.Stdout.WriteString(strconv.Itoa(divide(a, b)) + NEWLINE)
} else if *helpFlag {
flag.PrintDefaults()
}
}
Questo script usa la libreria flag per parsare le opzioni del programma, strconv per la conversione degli interi a stringhe e viceversa e di os per la gestione dell'output. Il programma è sicuramente migliorabile, però con questo esempio volevo dimostrare che, anche con poca esperienza di programmazione, con poche ore si possono ottenere buoni risultati! Per le istruzioni di compilazione vi rimando al sito ufficiale del linguaggio.
Ciao!
0 commenti:
Posta un commento