エクスプローラからGOPATHを設定した状態でコマンドプロンプトを起動する

go言語において各種コマンドを実行する際には、GOPATHという環境変数が設定されている事が望ましい訳です。絶賛WindowsユーザですのでCUIは余り好まないのですけども、全てをGUIで操作出来る訳でもない状況でありますので、Windows標準のファイラーであるところのエクスプローラをレジストリを弄って拡張します。まずはGOPATHを設定するシェルスクリプトを記述します。runwithgo.cmdというファイル名で好きなディレクトリに

>>...

go言語におけるtrailing comma(ケツカンマ)問題について

僕は、javascriptにおけるIE対応で辛い思い出が沢山あるのでカンマの位置には神経質なのですけども皆様は如何でしょうか?まずは、go言語のリテラルに関する仕様とレキサーの仕様を確認しておいて下さい。Composite literalsLexical elements - Semicolonsカンマをつけるべきか、つけざるべきかで、仕様書には特にケツカンマについて特筆されていないのですよね。普通の配列リテラルを宣言するとこうなります

>>...

go言語のコンストラクタでinterfaceを返す

go言語において呼び出し元にinterfaceのみを公開することで実装の詳細を隠ぺいすると、gomockを使ったテストがやり易くなります。ざっくり結論だけ書くとこんな感じのコーディングパターンにすると良いよって感じなので、これだけ見て、何が言いたいのかすぐに分かる人は続きを読まなくても良いと思います。package intf type Duck interface { Quack() string } type duck s

>>...

go言語におけるロギングについて

僕はJava方面に慣れていますのでslf4j(Logback)やlog4j2の様なロギングライブラリがあると扱い易いなぁ…と思う次第です。まとめ例によって結論から書くと XMLで設定する事に耐えられる ならseelogがオススメ。CLIで指定出来る程度の設定が出来れば良いなら、公式リリースなglogがオススメ。標準のlogパッケージについてまず、僕の開発環境はWindows7ですので、log/syslog を直接使うようなコードは避けた

>>...

go言語の名前空間について

package宣言における名前付けのアプローチが、goとJavaでは考え方が随分違っていて面食らったので忘れないうちに書いておきます。go言語のテンプレートAPIgo言語にはテンプレーティングするAPIが標準で二種類あります。text/templatehtml/templateTemplateというstructがそこらじゅうで出てくるのですけども、何か混ざったような印象を受けるのです。html/templateのAPIはtext/tem

>>...

アセット的なアレを実行バイナリ内に入れる話。

結論go言語でウェブアプリケーション書くなら、go-bindata使うべし。はじめにgoで書いたサーバは一つのバイナリに全部入るからデプロイが楽だという話がありますけども、それは全部のコードをgoで書いた時だけです。ウェブアプリケーションでは、ユーザインターフェース用のテンプレートファイルなど、どうしてもgoのコードではないリソースが発生します。例えばテンプレートをパーズする標準APIを見ると、こんな風になっています。html/temp

>>...