GO 言語っていろいろ作法があるんだね
こんにちわ。Daizo です。Arch Linux なのですが、cinnamon の Wayland 環境だと、まだ安定性が悪いようで、動作がイマイチなので、wayland 環境の安定板が欲くて、GNOME と COSMIC をインストールしてみました。COSMIC は、相変わらずですね。日本語での日付表示がなんか変です。GNOME もいつも通り、安定して良いですね。私が wayland でやりたかったのは、WezTerm の日本語のインライン変換とSteam がWayland 環境で安定して動くか?です。cinnamon:steam が動きませんCOSMIC : 日付の日本語表示が弱すぎて使いたくないGNOME:一番安定していて、Steam も問題ないが、WezTerm の動作が不安定。どれもダメじゃん!!早々に見切りを付けて、cinnamon X11 でしばらく我慢としました。ということで、GO言語の勉強しました。今回はエラーハンドリングの勉強をしてみました。func inputnumber() (int, error) { scanner := bufio.NewScanner(os.Stdin) fmt.Print("1以上の整数を入力してください: ") if scanner.Scan() { line := scanner.Text() words := strings.Fields(line) if len(words) > 0 { num, err := strconv.Atoi(words[0]) if err != nil { return 0, errors.New("数字を入力してください") } if num < 1 { return 0, errors.New("1以上の整数を入力してください") } return num, nil } return 0, errors.New("正しく入力されませんでした") } return 0, errors.New("入力異常が起きました")}こんな感じのコードを書いてみました。もっとも、この後、FizzBuzz のプログラムに数字やエラー内容は引き継がれる関数です。これ見て判る方もいると思いますが、else が無いんです。Gemini に聞くと、GO では、if 文の階層が深くなるのを嫌って、else は出来るだけ書かない事が作法のようです。また、変数は、最小限をその場で作り、{} 終了とともに使えなくするのが作法のようです。また、使わない変数をコンパイラが見つけるとエラーになるようですね。なるほど、いろいろ作法があるんだな。と学んだ日でした。