見出し画像

VでもGo入門(1)※補足

今回のnoteはVTuberでもできるGo言語入門(1)の補足記事になります。
なんで突然こんな記事を書いたかという理由はこちら。

こちらの配信で使うネタコードを準備しようと思ったからです。
読んでいただいている方はご存知かもしれませんが、第1回は環境設定と第2回は読み物のため、もしミレイちゃんが爆速で環境設定が終わってしまった場合、ネタがなくなるという懸念があるのでした。

そこで急遽簡単に作れてGoっぽさを感じられるようなサンプルコードを用意しました。
題して「タスク管理0.1」です。0.1なので超しょぼいです。
でも、以下のようなポイントは抑えてみようかなと。

・JSON形式ファイルを使う
・構造体を使う
・バックエンド(CUI)プログラム

設計(個々の処理の役割)としてはこんな感じです。

1.JSONファイルを読み込む
2.読んだデータを構造体に入れる
3.構造体に入ったデータを表示する

ファイルを読んでそのまま書くのではなく、いったん構造体というデータ形式に入れているのがポイントですね。
ここで文字はデータに変わり、その先にコンピュータの力を借りた無限の可能性が開けてゆくのです。

それではさっそく用意するJSONファイル
todo.jsonという名で下記の内容のファイルを作りましょう。作る場所はプログラムと同じ場所です。

[
   {"do": "ゴミを出す", "pri": 5},
   {"do": "家賃振込", "pri": 10},
   {"do": "電球買う", "pri": 3}
]

JSONファイルの詳細はざっくり説明しませんが、「doがタスクひとつひとつを表す項目」で、「pri(Priority)が数字で優先度を表している」とだけ覚えておいてください。

次にプログラムのソースコードです。
こちらはtaskap.goという名前にしましょう。タスクアプリというイメージですね。

package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"
)

type Task struct {
	Task     string `json:"do"`
	Priority int    `json:"pri"`
}

func main() {

	raw, err := ioutil.ReadFile("./todo.json")
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(1)
	}

	tasks := make([]Task, 0)
	json.Unmarshal(raw, &tasks)

	for _, v := range tasks {
		fmt.Print(v.Priority)
		fmt.Print(": ")
		fmt.Println(v.Task)
	}

}

第1回で作ったhello.goと同じ場所でも違う場所でも大丈夫です。go runやgo build といったコマンドが使える場所に置いてください。
どうでしょうか?いろいろ謎のキーワードは出てきていますが、知っている単語の知識や今までの情報から断片的にでもイメージできるところはりましたでしょうか。

実行するにはhello.goと同様にgo run taskap.goです。
実行モジュールを作成する場合はgo build task.goです。
実行結果や説明は配信が終わってから追記することにします。

とりいそぎ、今回はここまでです!

この記事が気に入ったらサポートをしてみませんか?