2020年5月27日水曜日

開発環境

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 コメント:

コメントを投稿