В книге много интересных и полезных примеров кода (в отличие от обычных для большинства книг примеров бла-бла-бла, высосанных из пальца).Olej писал(а): Базовым материалом, на этот раз, будет вот та книжка Кэрнигана, показанная выше.
Я буду здесь отмечать (себе на памятку) только те немногие, которые особо полезны на практике.
Таким безусловно является обработка опций командной строки запуска программы, на манер того, что делает POSIX getopt().
Код: Выделить всё
// Echo4 prints its command-line arguments.
package main
import (
"flag"
"fmt"
"strings"
)
var n = flag.Bool("n", false, "omit trailing newline")
var sep = flag.String("s", " ", "separator")
func main() {
flag.Parse()
fmt.Print(strings.Join(flag.Args(), *sep))
if !*n {
fmt.Println()
}
}
Код: Выделить всё
[olej@dell bin]$ go build gopl.io/ch2/echo4
Код: Выделить всё
[olej@dell bin]$ ./echo4 a bc def
a bc def
[olej@dell bin]$ ./echo4 -n a bc def
a bc def[olej@dell bin]$
[olej@dell bin]$ ./echo4 a bc def -n
a bc def -n
Код: Выделить всё
[olej@dell bin]$ ./echo4 -s / a/bc/def
a/bc/def
[olej@dell bin]$ ./echo4 -s/ a/bc/def
flag provided but not defined: -s/
Usage of ./echo4:
-n omit trailing newline
-s string
separator (default " ")
[olej@dell bin]$ ./echo4 -s"/" a/bc/def
flag provided but not defined: -s/
Usage of ./echo4:
-n omit trailing newline
-s string
separator (default " ")
P.S. "не совсем то" имеется в виду, что нельзя в командной строке, например, "пересыпать" опции (ключи) с параметрами ... но в целом это годится для написания консольных приложений, напоминающих поведением утилиты Linux.