hakeの日記

Windows環境でプログラミングの勉強をしています。

2015-08-01から1ヶ月間の記事一覧

Go言語 - WALKでGUI - 部品を並べる

とりあえずPushButtonを並べてみる。 縦に並べる MainWindowのLayoutフィールドにVBoxを指定して、Childrenフィールドの[]Widgetに部品を入れていく。 ちなみにLayoutをHBoxにすると横に並びます。 package main import ( "github.com/lxn/walk" . "github.c…

Go言語 - エラー時の戻り値

Go言語にはerror型インターフェースが定義されているので、これに適合するエラー用構造体を作成して、エラー時にはこの構造体をerror型として返す。 正常終了時には、nil リテラルを返すようにする。 package main import ( "fmt" ) /* Goで定義されているer…

Go言語 - WALKでGUI - 何もないウィンドウ

ネット上に(日本語の)情報がほとんど無いのでドキュメントを見ながら勉強。 環境は、Windows8.1(32bit)上のGo言語1.5+WALKライブラリです。 ドキュメントは、GoDocServerを起動した状態で、 http://localhost:6060/pkg/github.com/lxn/walk/を参照。walk直…

Go言語 - 複数ファイルのコンパイル

同packageの場合 他ファイル中の小文字で始まる関数や変数も参照可能。 同じフォルダに置きソースファイル名を指定しないでコンパイルする。実行ファイル名はフォルダ名になる。 \add\main.go \add.go main.go package main import ( "fmt" ) func main() { …

Go言語 - 正規表現

日本語も一文字として認識してくれるみたい。 でも、文字の位置を返すメソッドはバイトスライスの位置なのでで注意。 package main import ( "fmt" "regexp" ) func main() { s := "aあbいcうdえeおf" // 正規表現にマッチするかの有無 fmt.Println(regexp.M…

Go言語 - ソート

sortパッケージで、int,float64,stringのスライスについての小さい順のソートが可能。 逆順が欲しい場合は予め定義されているスライス型(intならIntSlice)にしてからsort.Sort(sort.Reverse(x))とする必要がある。でも、普通にソートして並べ替えた方が単…

Go言語 - 日本語文字列の操作

stringはバイト列なので、日本語文字列をインデックス指定で取り出しても文字単位の指定とはならない。文字単位で指定する場合には一旦runeのスライスに変換すると、インデックスが文字単位と一致する。 また、rangeを使用したforの中でも文字単位(rune)で…

Go言語 - マップ

rubyでいうところのハッシュ。 for rangeで取り出す場合は、キーのみと、キー&値のペアの取り出しができる。 キーを指定して値を読みだす場合、そのキーに対応する値が無い場合は二番目の戻り値がfalseになり、値(最初の戻り値)はゼロ値になる。 package …

Go言語 - 関数を引数にする関数

関数MyMapIntの第一引数は、一つのintを引数にして、intを返す関数。 package main import ( "fmt" ) func MyMapInt(fn func(int) int, sl []int) (ret []int) { ret = make([]int, 0, len(sl)) for _, n := range sl { ret = append(ret, fn(n)) } return }…

Go言語 - 埋め込みによる構造体の継承

構造体Fooを構造体Barに埋め込む(フィールド名をつけないメンバとする)ことで、継承の様なことができる。 package main import "fmt" type Foo struct { name string } func(f *Foo)hello() { fmt.Println("Hello", f.name) } type Bar struct{ Foo } func…

Go言語 - スライス

Go言語では一旦作成された配列の要素数は変更できない。スライスは配列への参照だけれども要素数の変更は可能。スライスに要素が追加されて、配列のキャパシティを超えた場合には、より大きなキャパシティを持った配列と、そのスライスが作成されて要素の値…

Go言語 - 構造体とメソッド

Go言語1.5が公開されたので入替。 構造体とメソッド使用方法の勉強。 注意点として、ポインタ経由で参照渡しされた構造体のフィールドへのアクセス時に *p.hoge のようにアスタリスクをつけるとエラーになる。 package main import "fmt" type Test struct{ …

Go言語 - インターフェース

インターフェースの使用方法の勉強。 いまひとつ理解できていないような気がしますが…… あるインターフェース型で宣言した変数や関数の仮引数は、そのインターフェース型で定義したメソッドを持つデータ型のみ代入可能ということで良いのかな? あるインター…

Go言語 - Shift_JISファイルの読み書き

Windowsでの使用ではSJISのテキストを扱うことが多くなります。SJISファイルの読み書きには以下のパッケージを使用します。 参考サイト ・Go で euc-jp や sjis の csv ファイルを読み込むには変換用のリーダーを1つかませるだけでよかった 入手先 ・https:/…

Go言語でGUIプログラム on Windows

VisualuRubyが使用できなくなってから、exeファイル単体で動作して、かつ、ファイルサイズが巨大にならないGUIアプリ制作環境を探していましたが、Go言語+WALKライブラリがなかなか良さげなのでメモ。 後述のhello.exeの実行ファイルのサイズは5MB弱で、Wind…