2015/09/24


1日1個 golang のクイズを出す @DailyGolangQuiz という twitter アカウントを見つけたので既存の質問に答えてみた。

golang の string は len でバイト列数が返ります。スマイル絵文字は 4 バイトです。

golang の range-for はバインド変数を1つ取る時はインデックスが返ります(2つの場合は2つ目が実値)。for が2回実行されます。よって 0 + 1 で答えは 1 です。

golang の string は添え字を使うとバイトが、sliceでバイト列が返ります。文字として扱うには rune でキャストする必要があります。

package main
import."fmt"
func main(){Println("Go home!"[0:1]);Println(string(([]rune)("🏠🚴")[0:1]))}

golang のレシーバはメソッド呼び出し時にコピーされます。Do を呼び出してレシーバ t をそのまま扱うには Do の宣言でレシーバをポインタで宣言する必要があります。アスタリスク1文字だけ足します。

package main
import . "fmt"
type T struct { V int }
func (t *T) Do() { t.V=1 }
func main() { t := T{}; t.Do(); Println(t.V); }

一見リファレンスしていない様に見えますが、実際には C 言語でいう t->V = 1 と同じ働きとなります。

golang の switch は引数を取らない記述が可能です。この場合の switch は評価値を持っていません。実際には以下と同じ意味となります。

package main

import . "fmt"

func main() {
    switch ok := false; {
    case true:
        Println("1", ok)
    case false:
        Println("0", ok)
    }
}

実際に発言のコードを golang playground で Format すると上記のコードに変換されるのが分かるはずです。

Posted at by



2015/09/02


以前紹介した cheat コマンドが Windows でも動く様になって、便利になっていた。

Big Sky :: man ページを読むには人生は短すぎるのでコマンドラインからチートシートを引こう
http://mattn.kaoriya.net/software/lang/go/20150518101220.htm

リポジトリの権限を貰ったので、Windows パッチをマージしました。

Support Windows by mattn · Pull Request #1 · dufferzafar/cheat · GitHub
https://github.com/dufferzafar/cheat/pull/1

そしてメンドクサイなーと思っていた cheat ファイルの用意もコマンドパツイチで実行出来る様になりました。

$ cheat fetch
また -r オプションを使うと $ cheat fetch -r https://github.com/chrisallenlane/cheat/cheat/cheatsheets

この様に github の URL を指定してフェッチ出来るので自前のチートファイルを使ってすぐさまセットアップ出来る様になりました。便利。

Posted at by



2015/09/01


kan さんが slack での公開型チャットの運用を始めました。

Soozy Slack

#Soozy これはなに? #soozy は元々IRCのfreenodeにあったチャンネルで、日本のperlコミュニティを中心にperlのことを含むプログラミングに関わる話題を中心に話し合っていました...

http://soozy.fushihara.net/
nekokak

皆さんも分かると思いますが、こういったチャットサービスで必ず必要となるのが回転する画像です。どうしても回転するアイコンが必要になったので、簡単に生成出来るコマンドを golang で書きました。

mattn/nekokak · GitHub
https://github.com/mattn/nekokak

使い方は簡単。

$ nekokak input.png

animated.gif というファイルが生成されます。これで今すぐ回転する画像を作る必要に迫られた場合も安心ですね。お役立て下さい。

Posted at by