2020年5月25日月曜日

開発環境

Go Systems Programming: Master Linux and Unix system level programming with Go (Mihalis Tsoukalos(著)、Packt Publishing)のChapter 2(Writing Programs in Go)、Exercises 2.の解答を求めてみる。

コード

package main

import (
 "fmt"
 "os"
 "strconv"
 "strings"
)

func main() {
 var min, max int
 first := true
 for {
  fmt.Printf("数値(整数)を入力(qで終了): ")
  var a string
  fmt.Scanln(&a)
  if strings.Compare(a, "q") == 0 {
   break
  }
  i, err := strconv.Atoi(a)
  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
   }
   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 
数値(整数)を入力(qで終了): 
strconv.Atoi: parsing "": invalid syntax: 不正な入力です。
数値(整数)を入力(qで終了): q
数値の入力がありませんでした。
% ./main 
数値(整数)を入力(qで終了): q
数値の入力がありませんでした。
% ./main 
数値(整数)を入力(qで終了): 1
数値(整数)を入力(qで終了): q
最小値: 1, 最大値: 1
% ./main 
数値(整数)を入力(qで終了): 5
数値(整数)を入力(qで終了): 1
数値(整数)を入力(qで終了): 4
数値(整数)を入力(qで終了): 2
数値(整数)を入力(qで終了): 3
数値(整数)を入力(qで終了): q
最小値: 1, 最大値: 5
% ./main
数値(整数)を入力(qで終了): 0
数値(整数)を入力(qで終了): 1
数値(整数)を入力(qで終了): 2
数値(整数)を入力(qで終了): -2
数値(整数)を入力(qで終了): -1
数値(整数)を入力(qで終了): q
最小値: -2, 最大値: 2
% ./main
数値(整数)を入力(qで終了): 1
数値(整数)を入力(qで終了): 2
数値(整数)を入力(qで終了): a
strconv.Atoi: parsing "a": invalid syntax: 不正な入力です。
数値(整数)を入力(qで終了): q
最小値: 1, 最大値: 2
% 

0 コメント:

コメントを投稿