package mainimport ( "os" "flag" "fmt" "strconv")var pad = flag.Bool("w", false, "Equalize the widths of all numbers by padding with leading zeros as necessary.")var format = flag.String("f", "%g", "Use the print(3)-style format for printing each number.")func main() { flag.Usage = usage flag.Parse() args := flag.Args() firsts := "1" incrs := "1" var lasts string switch len(args) { case 1: lasts = args[0] case 2: incrs = args[0] lasts = args[1] case 3: firsts = args[0] incrs = args[1] lasts = args[2] default: usage() } first, err := strconv.ParseFloat(firsts, 64) if err != nil { fail(err) } incr, err := strconv.ParseFloat(incrs, 64) if err != nil { fail(err) } last, err := strconv.ParseFloat(lasts, 64) if err != nil { fail(err) } if incr == 0 { fmt.Fprintf(os.Stderr, "seq: a zero increment will take you nowhere!\n") } f := *format+"\n" /* TODO if pad { maxi := 0 for c := first; c <= last; c += incr { maxl = len(fmt.Sprintf("%g", c)) } } */ if incr > 0 { for c := first; c <= last; c += incr { fmt.Printf(f, c) } } else { for c := first; c >= last; c += incr { fmt.Printf(f, c) } }}func fail(err error) { fmt.Fprintf(os.Stderr, "%s\n", err) os.Exit(2)}func usage() { fmt.Print("usage: seq [-fformat] [-w] [first [incr]] last") flag.PrintDefaults() os.Exit(2)}
package main
import (
"os"
"flag"
"fmt"
"strconv"
)
var pad = flag.Bool("w", false, "Equalize the widths of all numbers by padding with leading zeros as necessary.")
var format = flag.String("f", "%g", "Use the print(3)-style format for printing each number.")
func main() {
flag.Usage = usage
flag.Parse()
args := flag.Args()
firsts := "1"
incrs := "1"
var lasts string
switch len(args) {
case 1:
lasts = args[0]
case 2:
incrs = args[0]
lasts = args[1]
case 3:
firsts = args[0]
incrs = args[1]
lasts = args[2]
default:
usage()
}
first, err := strconv.ParseFloat(firsts, 64)
if err != nil {
fail(err)
}
incr, err := strconv.ParseFloat(incrs, 64)
if err != nil {
fail(err)
}
last, err := strconv.ParseFloat(lasts, 64)
if err != nil {
fail(err)
}
if incr == 0 {
fmt.Fprintf(os.Stderr, "seq: a zero increment will take you nowhere!\n")
}
f := *format+"\n"
/* TODO
if pad {
maxi := 0
for c := first; c <= last; c += incr {
maxl = len(fmt.Sprintf("%g", c))
}
} */
if incr > 0 {
for c := first; c <= last; c += incr {
fmt.Printf(f, c)
}
} else {
for c := first; c >= last; c += incr {
fmt.Printf(f, c)
}
}
}
func fail(err error) {
fmt.Fprintf(os.Stderr, "%s\n", err)
os.Exit(2)
}
func usage() {
fmt.Print("usage: seq [-fformat] [-w] [first [incr]] last")
flag.PrintDefaults()
os.Exit(2)
}