ラベル Go の投稿を表示しています。 すべての投稿を表示
ラベル Go の投稿を表示しています。 すべての投稿を表示

2016年6月9日木曜日

Go Lang mapのキーが存在しているか確認

  • このエントリーをはてなブックマークに追加

Go Lang mapのキーが存在しているか確認 GO言語マップに特定のキーがあるかどうかを確認するサンプルコードをメモします。
package main
import "fmt"

func main() {
dict := map[string]int{
    "foo": 1,
}

//存在する
if val, ok := dict["foo"]; ok {
    fmt.Printf("foo exists. The value is %#v", val)
}

//存在しない
if _, ok := dict["foo"]; ok {
    fmt.Printf("foo not exists")
}

2016年5月24日火曜日

golang 時間を引数としてプログラムに渡す

  • このエントリーをはてなブックマークに追加

golang 時間を引数としてプログラムに渡す golangプログラムで引数で指定された時間でSleepしたくて、いろいろはまってました。

Code

//整数を受け取って、Millisecondの倍数の時間でスリープ、既定は1000ミリ秒

multipleOfMS := flag.Int("m", 1000, "msの倍数")
flag.Parse()
time.Sleep(multipleOfMS * time.Millisecond)

Error

invalid operation: multipleOfMS * time.Millisecond (mismatched types *int and time.Duration)

Int型をtime.durationに変更

 multipleOfMS := flag.Int("m", 1000, "msの倍数")
flag.Parse()
time.Sleep(time.Duration(multipleOfMS) * time.Millisecond)

やはりエラー

cannot convert multipleOfMS (type *int) to type time.Duration
いろいろ調べてflag.Durationというのがあってこっちを使う
multipleOfMS := flag.Duration("m", 1 * time.Second, "-m=2sのように設定")
flag.Parse()
time.Sleep(*multipleOfMS)

実行

//5秒sleep
go run main.go -m=5s
//500ミリ秒sleep
go run main.go -m=500ms

2016年5月14日土曜日

MAC golang インストールとGOPATH設定

  • このエントリーをはてなブックマークに追加

MAC golang インストールとGOPATH設定 仕事でGOを使って、クライアントにWebsocketでメッセージをPushするサービスを開発しています。
GOのmacへのインストールとGOPATHの設定をメモします

install

$ brew install go
インストール先が/usr/local/goとなるはずです。

GO workspace作成

GOのworkspace(どこでもいい)を作成して、GOのソースコードとパッケージ、実行可能なバイナリファイルを格納します。
一般的に以下のように配置します。
例:…work/
.../gowork/src
.../gowork/pkg
.../gowork/bin

GOPATH設定

GO workspaceを決めたので、GOPATHを設定します。workspaceのbinとGoのインストール先binも合わせて追加しておきます。
$ mkdir $HOME/c-ye/gowork
$ vi ~/.bash_profile

export GOPATH=$HOME/c-ye/gowork
PATH=$PATH:$GOPATH/bin:/usr/local/go/bin
これで$HOME/c-ye/goworkの下にプロジェクトごとにソースを配置します。
また、godepをインストールした場合は
$ go get github.com/tools/godep
$HOME/c-ye/goworkのフォルダ中身が以下のようになる。
bin
    godep  #実行可能
pkg
    darwin_amd64
        github.com/tools/godep/
src
    github.com/tools/godep/
        diff.go
        go.go
        main.go
        ......
    testGO/      #自分のプロジェクト
        main.go 
とりあえずこんな感じです。詳しいはこちらを
https://golang.org/doc/code.html#Overview