go
例 $GOPATH/src/foo/foo.go package foo import "bar" func Foo() { println("foo.Foo") } func CallBar() { bar.Bar() } $GOPATH/src/bar/bar.go package bar import "foo" func Bar() { println("bar.Bar") } func CallFoo() { foo.Foo() } buildしてみる …
ゴール 先日【iOS】Push通知の実装(サーバ編その1)【できた】 - DRYな備忘録においてRubyで実装した 今回はこれをGo言語でやる 記録 こういうのがある anachronistic/apns · GitHub 上記ブログで使用したRuby製のhoustonとの違いは クライアントを初期化す…
問題 以下のエラーが出た panic: runtime error: assignment to entry in nil map 調査 Go言語では、ほとんどの型は宣言時に初期化される。 package main import "fmt" type A struct { Foo []float64 Bar bool } func main() { var i int fmt.Printf("%+v\n…
メモ $GOPATH/src/foo/foo.go package foo type Foo struct{ Bar string } main.go package main import "fmt" import "foo" type Buz struct { foo.Foo } func main() { bar := Buz{} fmt.Printf("%+v\n", bar) bar.Foo = foo.Foo{Bar:"otiai10"} fmt.Print…
% go test ok command-line-arguments 120.786s いやokじゃねえよ。出せよ。 解決 -vつけましょう % go test -v === RUN TestNew hoge is hoge DRYな備忘録
// hoge.conf aaaaaaaa bbbbbbbb cccccccc dddddddd // main.go package main import "fmt" import "os" import "io/ioutil" import "strings" func main() { f, _ := os.Open("hoge.conf") defer f.Close() // (*os.File) Read を使う限りは、buffer sizeを…
問題 メタプログラミング的なことをするうえで、ある名前のpackageの中で定義されているstruct名を抽象的に取得したいことがあったので、その方法をメモ 方法 go/ast go/parser あたりを使う 準備 % cd % mkdir $GOPATH/src/foo % vi $GOPATH/src/foo/foo.go…
go help build usage: go build [-o output] [build flags] [packages] Build compiles the packages named by the import paths, // `build`はimport pathsで与えられた名前のgo srcをコンパイルします along with their dependencies, but it does not ins…
revel The Revel Web Framework for Go Go言語製のウェブフレームワークのひとつ 前回はrevel new hoge/fugaを読んだ 読む場所 % cd $GOPATH/src/github.com/revel/cmd revel run hoge/fuga prod めんどいからprodモード起動の場合を読む cmdのrevel/run.go …
revelとは The Revel Web Framework for Go Go言語製のウェブフレームワークのひとつ 読む場所 % cd $GOPATH/src/github.com/revel/cmd revel new hoge/fuga revel/new.go var cmdNew = &Command{ UsageLine: "new [path] [skeleton]", Short: "create a ske…
ゴール 前回のエントリでは、PaaSの代表格であるHerokuをとりあえず使ってみた 今回はHerokuでGo言語製ウェブフレームワークのひとつであるRevelを動かしたい 番外「サブドメインをかっちょよくしたい」 記録 とりあえず新しいRevelプロジェクトつくる % rev…
otiai10/twistream · GitHub 練習をかねてつくったよ The very simplest interface to use Twitter Streaming API by golang. timeline, _ := twistream.New( "https://userstream.twitter.com/1.1/user.json", CONSUMERKEY, CONSUMERSECRET, ACCESSTOKEN, A…
背景 みんなだいすきGitHubで、gosseractというGo言語のOCRパッケージをニヤニヤしながらつくっていたら、知らない外人さんから 「いやos/execちゃうくてなんでcgo使わへんの?」 とか言われたのである。 cgoってナニよ? cgo - The Go Programming Language …
問題 length := len(users) var names [length]string とかしたいけど invalid array bound length と叱られる 解決 配列にはconstantしか渡せない。可変長配列にはスライスを使う Google グループ Go言語のスライスを理解しよう length := len(users) names…
たんなるメモです Go言語のスライス Go言語にはもちろん配列もあるけれど、スライスというのがある。めっちゃ乱暴にいうと可変長配列。むずかしいことはわかりません。参考になるのはこれです。 Go言語のスライスを理解しよう Arrays, slices (and strings):…
前のやつ Go言語でジェネリクスっぽいことがしたいでござる【generics】【golang】 - DRYな備忘録 の続きっていうかメモ /***** * Go言語で型変数を受けるCollectionみたいなの *****/ package main import "fmt" import "reflect" type E struct { element …
Go言語でジェネリクスみたいなことがしたいでござる。 色々調査のうえでやってみた。 stringからインスタンスを取得 完全に抽象化は無理で、具体レイヤーで必ず型アサーションをしなきゃいけない。 型アサーションの例 a := new(A) b, ok := reflect.ValueOf…
memo Go Playground package main import "log" func main() { m := make(map[string]string) m["exists"] = "みつかったでござる" // m["not_exists"] = "みつからない" v, ok := m["exists"] println(v, ok) v, ok = m["not_exists"] println(v, ok) // よ…
前略 昨日これを書きました 【つくった】Go言語のflagパッケージでコマンドラインオプションが取得できない気がしたので - DRYな備忘録 これに対して、id:hayajo_prpr 氏から以下のようなご指摘を頂きました。 flagパッケージを使う場合はこんな感じでいかが…
追記 【flagg】そんなもんは作らんでよかったのである【Go言語】 - DRYな備忘録 以下原文 Go言語ではcliのbinが簡単に作れる % cd $GOPATH/src % mkdir mytest % vi mytest/main.go main.go package main import "fmt" func main() { fmt.Println("イエーイ☆-(ノ…
問題 Go言語でMySQLを使う案件があったので、Goに標準のdatabase/sqlパッケージを使う(あとgithub.com/go-sql-driver/mysqlパッケージも)。問題はdatabase/sqlパッケージの*sql.DBが持ってるQueryメソッドがデフォルトで実装しているplaceholder機能を以下…
問題 Go言語はinterfaceによる型の制約ができる。逆にinterfaceで宣言したメソッドをすべて満たすいかなるstructもそのinterfaceを満たすものとして扱える。いわゆるダックタイピング。 参考 ダックタイピングって一体なんなのよ【golang】 - DRYな備忘録 で…
問題 Go言語で、たとえばstring型を拡張してみたい 一応 package main type MyStr string func (s MyStr) Waros(i int) MyStr { for j := 0; j < i; j++ { s += "w" } return s } func main() { var s MyStr = "なんつってつっちゃった" println( s.Waros(20…
問題 Go言語のmapでは、キーとバリューにそれぞれ型が指定できる。 var myMap = map[int]string{ 60: "還暦", 70: "古希", 77: "喜寿", } 当然、定義したtypeやその参照でも指定できる。 type User struct { Name string Lang string } var myMap = map[stri…
問題 なんか文字列渡ってきてそれに対応するクラスをインスタンス化するみたいなのやったりする。 たとえば PHP prop}"; } } $class_name = "MyKlass"; $k = new $class_name(); $k->meth(); Python class MyKlass: def __init__(self): self.p…
問題 Redisを使ったプロジェクトのCIをTravisに任せたいんだけど、TravisがホストしてるサーバってRedis入ってるの?ポートは? 解決 入ってます Travis CI: Databases and other services Redisだけじゃなくてもちろん他のDBも入ってる。ウェブGUIからの操…
ゴール MacにRedisをインストールしてことはじめ【redis】【MacOS】 - DRYな備忘録 これをやったので Goのコードから同じことをしてみます 方針 tcpでredisサーバに接続して、redisのプロトコルでメッセージのやりとりをします。 Redis Protocol specificati…
問題 以前 Go言語のchannelって一体何よ ~基礎編~【golang】 - DRYな備忘録 のエントリを書いて分かった気になってたgolangのchanですが、このたびそらで書いてみて動いたのでこれはちょっと理解できたと思っていいだろうということでメモるよ。 並行処理と…
問題 Golangのstructに生えてるメソッドによって、structのfieldを更新しようとしたけど、変わってないっぽい? package main import "fmt" type Ship struct { name string } func (s Ship) ChangeName() string { s.name = s.name + "改" return s.name } …
問題 Go言語ではinterfaceで実装すべきメソッドの制約がつけれる 定義したstructが定義したinterfaceの実装を満たしているかチェックしたい 解決 Go言語では "Type Assertion" という仕組みがある package main import "fmt" // import "reflect" type Foo i…