2009/11/14


amachangのtwitterタイムラインの奴をhttp.Getでやってみた。
早速 Go 言語を試してみる! - IT戦記

http.Get は何故か動かなかったので net.Dial を使った。

http://d.hatena.ne.jp/amachang/20091111/1257928890

こうかな?わかりません><
package main

import (
    "fmt";
    "json";
    "io";
    "http";
)

func main() {
  if r, _, err := http.Get("http://twitter.com/statuses/public_timeline.json"); err == nil {
    b, _ := io.ReadAll(r.Body);
    j, _, _ := json.StringToJson(string(b));
    for i := 0; i < j.Len(); i++ {
      data := j.Elem(i);
      fmt.Printf("%s: %s\n",
        data.Get("user").Get("screen_name"),
        data.Get("text"));
    }  
  }
}

今日、始めてGo触ってみたけど、重大な欠点を見つけた。
# vi twitter.go
コードかきかき...
# 8g twitter.go
うし!コンパイルだ!
twitter.go:7: imported and not used: net
おろっエラーだ
# vi twitter.go
直すぞ!直すぞ!
# !8
もっかいコンパイルだ!
bash: !8: event not found
><
言語仕様で、multiple-valueをちゃんとmultiple-valueで受けないといけないのが堅すぎる気がする。
pythonとかC++とか言われてるけど、私はluaなんじゃないかと思った。
Posted at by



2009/11/13


goを弄ってるといちいち8g(5g?)とか8l(5l?)とかでコンパイル、ビルドする手間が必要なんだけど、これってquickrun.vimの設定で便利になるんじゃないか?と思ったので設定した。
thincaさんバージョンのquickrun.vimを入れた後、vimrcで以下の様に記述する。
let g:quickrun_config = {
\  'go': {
\    'command''8g',
\    'exec': ['8g %s', '8l -o %s:p:r %s:p:r.8', '%s:p:r %a', 'rm -f %s:p:r']
\  }
\}
環境によっては8g/8lを書き換える必要があります。
あとは拡張子goのファイルで<leader>r(mapleaderを設定してなければ\r)で、コンパイル、リンク、実行までやってくれて、まるでスクリプト言語を書いている様な開発効率が得られる!

thinca++
Posted at by