[お題にTRY] 九九の表示 #Go言語

2020年6月3日

Go テクノロジー プログラミング 特集

t f B! P L
ココ数年、同じ種類の靴下ばかりを履いているんですが、必ず3ヶ月ぐらい履いていると、左足の親指の付け根が破れてしまう事に悩んでいる、ユゲタです。 最近、妙に求人広告が増えてきているgo言語(golang)ですが、覚えておいて損はない言語であることは間違いなさそうですね。

本日のIT謎掛け

「golang」と、かけまして・・・ 「お付き合いする女性に困らない人の口癖」と、ときます。 そのココロは・・・ 「コンパいる?」(コンパイル)

goで九九表示

package main import "fmt" func main(){ for i := 1; i<=9; i++ { for j := 1; j<=9; j++ { fmt.Printf("%v × %v = %v\t" , j,i,(j*i)) } fmt.Printf("\n"); } } 多言語と同じ感じで、最短で書いてみました。 実行すると・・・ $ go run 001.go 1 × 1 = 1 2 × 1 = 2 3 × 1 = 3 4 × 1 = 4 5 × 1 = 5 6 × 1 = 6 7 × 1 = 7 8 × 1 = 8 9 × 1 = 9 1 × 2 = 2 2 × 2 = 4 3 × 2 = 6 4 × 2 = 8 5 × 2 = 10 6 × 2 = 12 7 × 2 = 14 8 × 2 = 16 9 × 2 = 18 1 × 3 = 3 2 × 3 = 6 3 × 3 = 9 4 × 3 = 12 5 × 3 = 15 6 × 3 = 18 7 × 3 = 21 8 × 3 = 24 9 × 3 = 27 1 × 4 = 4 2 × 4 = 8 3 × 4 = 12 4 × 4 = 16 5 × 4 = 20 6 × 4 = 24 7 × 4 = 28 8 × 4 = 32 9 × 4 = 36 1 × 5 = 5 2 × 5 = 10 3 × 5 = 15 4 × 5 = 20 5 × 5 = 25 6 × 5 = 30 7 × 5 = 35 8 × 5 = 40 9 × 5 = 45 1 × 6 = 6 2 × 6 = 12 3 × 6 = 18 4 × 6 = 24 5 × 6 = 30 6 × 6 = 36 7 × 6 = 42 8 × 6 = 48 9 × 6 = 54 1 × 7 = 7 2 × 7 = 14 3 × 7 = 21 4 × 7 = 28 5 × 7 = 35 6 × 7 = 42 7 × 7 = 49 8 × 7 = 56 9 × 7 = 63 1 × 8 = 8 2 × 8 = 16 3 × 8 = 24 4 × 8 = 32 5 × 8 = 40 6 × 8 = 48 7 × 8 = 56 8 × 8 = 64 9 × 8 = 72 1 × 9 = 9 2 × 9 = 18 3 × 9 = 27 4 × 9 = 36 5 × 9 = 45 6 × 9 = 54 7 × 9 = 63 8 × 9 = 72 9 × 9 = 81 さほど難しい要素はありませんが、使い慣れるために、これをリファクタしてみましょうかね。

配列を使う

package main import "fmt" import "strconv" import "strings" func main(){ for i := 1; i<=9; i++ { arr := []string{} for j := 1; j<=9; j++ { str := strconv.Itoa(j) +" × "+ strconv.Itoa(i) +" = "+ strconv.Itoa(j*i) arr = append(arr , str) } fmt.Println(strings.Join(arr,"\t")) } } 結果は001と同じなので省きますが、少し解説を入れたいと思います。 まず、web系スクリプト言語と違って、型管理を厳密に行わないといけません。 そのため、数値を混ぜて文字列を作成するときに、"strconv.Itoa(i)"という風に、文字列をstringにコンバートして上げる必要があります。 結合は"+"ですんなりできます。 配列の宣言も"arr := []string{}"として、ちゃんと型を意識するのを忘れないようにしましょう。 それから、join結合も、少しめんどくさい書き方になります。 strings.Join(arr,"\t") joinの"J"が大文字であることに注意しましょう。 最後に、プログラム冒頭のimportも機能を使う時に宣言しないといけないので、この辺はリファレンスサイトでよく理解しておく必要がありますね。

入力モード

package main import "fmt" import "strconv" import "strings" func main(){ var inp int print("Input number : ") fmt.Scan(&inp) for i := 1; i<=inp; i++ { arr := []string{} for j := 1; j<=inp; j++ { str := strconv.Itoa(j) +" × "+ strconv.Itoa(i) +" = "+ strconv.Itoa(j*i) arr = append(arr , str) } fmt.Println(strings.Join(arr,"\t")) } } 実行すると・・・ $ go run 003.go Input number : 5 1 × 1 = 1 2 × 1 = 2 3 × 1 = 3 4 × 1 = 4 5 × 1 = 5 1 × 2 = 2 2 × 2 = 4 3 × 2 = 6 4 × 2 = 8 5 × 2 = 10 1 × 3 = 3 2 × 3 = 6 3 × 3 = 9 4 × 3 = 12 5 × 3 = 15 1 × 4 = 4 2 × 4 = 8 3 × 4 = 12 4 × 4 = 16 5 × 4 = 20 1 × 5 = 5 2 × 5 = 10 3 × 5 = 15 4 × 5 = 20 5 × 5 = 25 fmt.Scanで入力する値の型は、その変数で指定することができます。 さほど難しい処理ではないのですが、

まとめ

今回は、文字列操作と、配列操作と入力機能を少しだけ理解することができました。 go言語は、コンパイルして便利アプリケーションとして使うほうがいいんですが、もう少し使い慣れないと、実践には使えそうにないと思った下駄でした。

このブログを検索

プロフィール

自分の写真
町田市, 東京都, Japan
プログラミングとサーバーを心の底から楽しむクリエーターです。 経営者であり、開発者でもありますが、得意としているのは、アイデア創出です。

ブログ アーカイブ

QooQ