Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

golang

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(…