開発環境
- macOS Catalina - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Go (プログラミング言語)
Go Systems Programming: Master Linux and Unix system level programming with Go (Mihalis Tsoukalos(著)、Packt Publishing)のChapter 2(Writing Programs in Go)、Exercises 3.の解答を求めてみる。
コード
package main
import (
"fmt"
"os"
"strconv"
)
func main() {
var min, max int
first := true
for _, v := range os.Args[1:] {
i, err := strconv.Atoi(v)
if err != nil {
fmt.Fprintf(os.Stderr, "%v: 不正な引数です。\n", err)
continue
}
if first {
min = i
max = i
first = false
} else {
if i < min {
min = i
} else if i > max {
max = i
}
}
}
if first {
fmt.Println("コマンドライン引数に数値を指定してください。")
} else {
fmt.Printf("最小値: %v, 最大値: %v\n", min, max)
}
}
入出力結果(Zsh、PowerShell、Terminal)
% go build main.go
% ./main
コマンドライン引数に数値を指定してください。
% ./main 1
最小値: 1, 最大値: 1
% ./main 5 1 4 2 3
最小値: 1, 最大値: 5
% ./main 0 1 2 -2 -1
最小値: -2, 最大値: 2
% ./main 1 2 a
strconv.Atoi: parsing "a": invalid syntax: 不正な引数です。
最小値: 1, 最大値: 2
% ./main a bc 1 2
strconv.Atoi: parsing "a": invalid syntax: 不正な引数です。
strconv.Atoi: parsing "bc": invalid syntax: 不正な引数です。
最小値: 1, 最大値: 2
%
0 コメント:
コメントを投稿