【チャレンジ精神】久々にGo言語を触ってみる | 一人男子会

一人男子会

何となく思った事を書いていきます。(ピグ関連含む)

remenbergolang_title
久々に触ったら予想以上に忘れてました。

その昔Go言語を勉強していた際に、
作っていたコンソールアプリがあった事を思い出した。

当時コンソールアプリばっかり見ていた俺は
termboxなるすばらっしい物を触っていた。


作りかけだったので作業をすすめたい。


が、Go言語自体久々だったもんで、
かなり時間を食ってしまった。

今後忘れないように備忘録として残す。


動きは単純で
1.名前だけを入力する取引先入力画面(Xmlに出力)
2.連番と名前などを一覧表示する画面(Xmlから読込)


たったそれだけならすぐだろうとタカをくくっていた。
1時間前の自分をぶん殴りたい。


では早速備忘作業。

対象データ定義

import(
"encoding/xml"
)

type CustomerMaster struct{
XMLName xml.Name "CustomerMaster"
Customer[] Customer
}

type Customer struct{
XMLName xml.Name "Customer"
CustomerCd int
CustomerName string
AddDate string
ModifyDate string
}


Xmlから読込を行う部分

datas := CustomerMaster{}
xmlFile, err := os.Open("CustomerMaster.xml")
if err != nil {
panic(err)
}
defer xmlFile.Close()
XmlData, _ := ioutil.ReadAll(xmlFile)
xml.Unmarshal(XmlData, &datas)

↑の例だと、
datas.Customer[index]で各要素にアクセス。

Xmlへ出力を行う部分

filename := "CustomerMaster.xml"
file, _ := os.Create(filename)
xmlWriter := io.Writer(file)
enc := xml.NewEncoder(xmlWriter)
enc.Indent(" ", " ")
if err := enc.Encode(datas); err != nil {
panic(err)
}


まぁ、ここまでなら特に問題なく進むだろう。

問題はココからだ。

久々のWindowsでコンソールアプリを作った俺は、
文字コードの事などさっぱい気付いていなかった。

文字化け怖い。


備忘の為に書いておこう、
stringとかruneとか忘れるな。

remenbergolang_result
ちゃんと書けたし読み込めた。