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です。
実行結果や説明は配信が終わってから追記することにします。
とりいそぎ、今回はここまでです!
この記事が気に入ったらサポートをしてみませんか?