テック-Go

書籍: Go言語によるWebアプリケーション開発

2020年1月に購入し、途中ずっと積んでたんだけど、半年後ようやく再開し完走しました(^_^;) 以下のような"動く"アプリケーションをハンズオンで作成していきます。Webアプリケーション開発と名うってますが、CUIの作成もあります。 WebSocketを使用した双方…

Docker NSQのConsumerへローカルGoプロセスから接続する

通常のNSQ、Consumerへの接続は、lookupdを通して、 q, err := nsq.NewConsumer("topic", "key", nsq.NewConfig()) ... if err := q.ConnectToNSQLookupd("localhost:4161"); err != nil { ... } のようにlookupdでConsumerを抽象化して接続するんだけど、do…

GoからDocker NSQへ接続する

現在、"Go言語によるWebアプリケーション開発"を手を動かしながら読んでいます。 chapter5.3まで完了したんだけど、書籍と違ってて少しハマったところをメモしておきます。 (function(b,c,f,g,a,d,e){b.MoshimoAffiliateObject=a; b[a]=b[a]||function(){arg…

Go $GOPATH外でのプロジェクト時の独自パッケージインポート

$GOPATH外でGOプロジェクト作成時にプロジェクト内で作成したパッケージをimportする方法。 プロジェクトツリーは、 /project/ app/ main.go mylib/ mylib.go のような構成で、main.goから import "mylib" のように利用したい場合。 go modulesを利用するこ…

A Tour of Go - Concurrency : 自分用リファレンスメモ

Goroutines Goroutinesは軽量なスレッド。goと記述するだけで別スレッドで処理が実装される。 go f(x, y, z) Channels channelを使用してgoroutine間でデータの送受信を行える。 channelの生成 ch := make(chan int) channelの送受信 ch <- v // v をチャネ…

A Tour of Go - Method and interfaces 自分用リファレンスメモ

Methods Goには、クラス( class )のしくみはないが、型にメソッド( method )を定義できる。 struct宣言したTyoeにメソッドを追加することでクラス定義と似た振る舞いを記述できる。 type Vertex struct { X, Y float64 } // Vertex型にメソッドを定義 func (…

A Tour of Go - More types : 自分用リファレンスメモ

Pointers ポインタ型の宣言 //宣言 var po *int &オペレータでポインタを引き出せる。 *オペレータでポインタの指す先の変数を示す。 i := 42 //宣言 & 初期化 p := &i fmt.Println(p) // 0x40e020 fmt.Println(*p) //42 //ポインタpを通してiへ値を代入する…

A Tour of Go - Flow control statements 自分用リファレンスメモ

For sum := 0 for i := 0; i < 10; i++ { sum += i } while的な記述 sum := 1 for sum < 1000 { sum += sum } If 括弧 ( ) は不要。 if x < 0 { fmt.Println(x) }else{ fmt.Println(x) } If with a short statement ifの評価前にステートメントを記述できる…

A Tour of Go - Packages, variables, and functions の自分用リファレンスメモ

A Tour of Go の自分用リファレンスメモ A Tour of Go Exported names 外部のパッケージから参照できるオブジェクトは先頭が大文字から始まる。 例) PrintlnとPi fmt.Println(math.Pi) Functions 関数の定義 func add(x int, y int) int { return x + y } ad…