読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

for文におけるrange節について

日本語や中国語も含めたマルチバイト文字もよろしくパースしてくれます UTF-8でサポートしてる必要があるので、ヒエログリフとかは駄目です。 package main import "fmt" func main() { for pos, char := range "これ不错one까요?" { fmt.Printf("character …

deferでリソースの閉じ忘れを防止する

前回の事例でもちょっと触れたdeferについて。 これは例外の地獄ネストを回避するための素敵な機能です。 実際のところ 一時ファイルを使う場合の事例は以下の通り。 import ( "io/ioutil" ) func Something () { file, _ := ioutil.TempFile(os.TempDir(), …

io.ioutilを使って一時ファイルをつくる

ツールを作る際、何かと必要な一時ファイル。 GO言語では、io.ioutilを使ってつくる事ができます。 実際のところ 一時ファイルを作る場合はioutil.TempFileを使います ioutil - The Go Programming Language公式サンプルを元に、一通りの挙動をするスクリプ…

if構文の中だけで通用する変数を別途設定できる

GO言語ではif文の中だけで通用する変数を別途設定できます。 実際のところ 公式サンプルから。 指定数分、乗数を掛けるが最後の引数を突破した場合はそれに従う……みたいな ある種フィルターめいた関数は以下の通り。 package main import ( "fmt" "math" ) f…

testingパッケージの"Example~"記法だと実行例をドキュメントに記載できる

testingパッケージの"Example~"記法だと実行例をドキュメントに記載できます。 ユーザが頻繁に利用するタイプの関数なら、付けておくと親切で良いかと思います。 実際のところ 実行対象の内容は前回のと同じです。 func ExampleSomething() { fmt.Println(So…

Golangでテストを始める

GoLangでテストをやるには"testing"パッケージをつかいます。 公式では、余計な外部パッケージを使わずデフォのものを推奨しているので、それに従っておきます。 実際のところ デフォでは"$GOPATH/src"以下にあるフォルダを対象に実行されます。 今回は"hoge…

GoLang用REPL「gore」

GoLangにはサードパーティ提供のREPL「gore」があります。 毎回毎回コンパイルしなくとも動作検証ができます。 実際のところ 導入 $ go get -u github.com/motemen/gore公式で周辺ツールの導入も勧められているので、 ついでに導入しておきます。 $ go get -…

【読書メモ】みんなのGO言語

みんなのGo言語【現場で使える実践テクニック】作者: 松木雅幸,mattn,藤原俊一郎,中島大一,牧大輔,鈴木健太,稲葉貴洋出版社/メーカー: 技術評論社発売日: 2016/09/09メディア: 大型本この商品を含むブログ (3件) を見るGO界隈で評判だったので買ってみました…

GoLangの環境変数を一覧する

shuzo-kino.hateblo.jp の続きみたいな記事です。 すでにGOROOTは不要になっていたようです。そういったGO言語の環境変数まわりを一覧するには"$ go env"を実行してください。 実際のところ ちょっと誤爆してinstallコマンドを空で叩いたところ以下のような…

OSパッケージでディレクトリを弄る

OSパッケージでディレクトリを弄る方法です。 実際のところ 初期状態確認=>1234というディレクトリをつくる=>1234ディレクトリを消す という挙動は以下の通り package main import ( "fmt" "os" "os/exec" ) func main() { var result []byte result, _ = sh…

GO言語でシェルコマンドを実行する

GO言語でシェルコマンドを実行する方法です。 実際のところ この例ではコマンドを実行し結果を得ています。 結果は"[]byte"型で返ってくるため、必要おうじてstring型にキャストしてやる必要があります。 package main import ( "fmt" "log" "os/exec" ) fun…

Go標準のJSONパッケージ

Go言語には標準でencoding/jsonというパッケージが付属しています。 以前の記事では、typeから変数を作って無理くりパースする形でやってましたが……。 shuzo-kino.hateblo.jp 実際のところ いまかいてます 参考もと JSONのパース/生成 - はじめてのGo言語

go-echoでGPSな固定JSONを返す

go-echoでGPSな固定JSONを返すサンプルです 実際のところ package main import ( "net/http" "github.com/labstack/echo" ) // 型の指定 type ( place struct { LAT float32 `json:"lat"` LON float32 `json:"Lon"` NAME string `json:"name"` } ) // 変数の…

go用の軽量WEB鯖echo

go用の軽量WEB鯖echo 実際のところ 導入はパッケージ $ go get -u github.com/labstack/echo最小構成はこんな感じ package main import ( "net/http" "github.com/labstack/echo" ) func main() { e := echo.New() e.GET("/", mainpage) e.Logger.Fatal(e.St…

GO言語を導入する

若干参考もとが古かったようです。 GOROOTはすでに不要です。 詳しくは以下を参照 shuzo-kino.hateblo.jp 実際のところ OS X そのままズバリ、パッケージで導入しましょう。 この辺りは大分熟れたようで、昔のようにGOPATHがどうのこうのと心配しなくて良い…

「docopt」を使えばgithubやherokuのCLIツールみたいなUIをドキュメント駆動開発で実装できる。

Julliaとか聞いたこともない珍しい言語もサポートdocopt/docopt.rb · GitHub と、Rubyも対応はしているのですが docopt has been confirmed to work with 1.8.7p370 and 1.9.3p194. If you have noticed it working (or not working) with an earlier versio…

オンラインREPL「http://repl.it/」が魔界技術すぎて辛い

ちょっとJavaScriptで遊びたいなーと検索をかけたところ…… オンラインREPL「http://repl.it/」を発見しました 使えるものの一例 JavaScript以外にも、色んな言語が実装されています。 一通り遊んでみた範囲では、軽い動作検証程度であれば十分用は成すようで…

Go製対話型フィルタリングツール「peco」

pecoはpytyon製ツールpercolを参考にgo言語で実装された対話型フィルタリングツールです。 使い方 通常のコマンドと同様、パイプで繋いで実行します。 $ ls | pecopecoが実行されると、クエリの入力画面がでます。 QUERY> IgnoreCase [97 (1/5)] 121025/ 121…

クロスプラットフォームな環境でpbcopy | pbpasteをしたいときはgocopy | gopasteを使う

gocopyおよびgopasteは、クロスプラットフォームでOS Xのpbcopy | pbpasteみたいな事をするGo-lang製コマンドです。 つかいかた $ cat sample.txt gaga gagagaga fafawegawebga awl;rgnjkbdfvawbeなんてファイルがあった場合、普通にパイプライン繋ぎで行け…

GO用の全部のせフレームワークRevelでWEBアプリをつくる

GO言語にも、Railsのような全部のせWEBフレームワークがあります。 導入 これもgo getで楽々導入です。 go get github.com/revel導入が完了すると、$GO_PATH/src以下にサンプルが展開されます。試しにチャットアプリを動かしてみます。 $ revel run github.c…

GOPATHがないとか言われたら

GOPATHを設定していない場合、ライブラリの導入時にエラーがでます この場合 $ ls -dF ~/とやってhomeを確認した上で export GOPATH='/Users/shuzo/src'とでもやっておけば大丈夫です。 URLは驚いた事に何でもよいらしく $ go help gopath The Go path is us…

Go getのためには、各種バージョン管理ツールが必要

とあるパッケージを入れようとした所、エラーがでました。 $ go get github.com/kr/godep go: missing Mercurial command. See http://golang.org/s/gogetcmd package github.com/kr/godep imports code.google.com/p/go.tools/go/vcs: exec: "hg": executab…

「Go Web 编程」でGo言語のWebアプリを学ぼう

「Go Web 编程」はGo言語でWebアプリケーション(Web 编程)を開発する書籍です。全文・画像共にCC BY-SA 3.0 License(いわゆるクリエイティブコモンズ)で公開されています。 書籍版もは2013年5月末に大陸中国で出版されたようす。 有志(?)による日本…

Redigo:GO言語上でredisを試す。

ライブラリを導入し $ go get github.com/garyburd/redigo/redis$ #{おこのみのエディタ} hello-go-redis.goとやって、以下のコードを入力します。 package main import "fmt" import "github.com/garyburd/redigo/redis" func main() { //INIT OMIT c, err …

%v記法を使うと変換で楽できる

$ cat v.go package main import "fmt" func main() { i := 0 fmt.Printf("%03v\n", i) fmt.Printf("%02v\n" ,0xff) fmt.Printf("%020v\n" ,"hello") } こんな感じです。 実行結果 $ go run v.go 000 255 000000000000000hello 数値なら10進数。

GO言語には標準でコーディング規則矯正ギプスが付属している

マスコットが一々神経を逆撫でするGO言語の話題です。GO言語には標準でコーディング規則矯正ギプスが付属しています。 その名も「fmt」...まんまですね。 実例 たとえば、こんな見るにも無惨なコードも $ cat hello.go package main import "fmt" func main(…