タグ

StringとGoに関するMukeのブックマーク (8)

  • go-sqlrow

    この記事はGo2 Advent Calendar 2017 13日目の記事です。 昨日は@kami_zh さんの Goで標準出力をキャプチャするパッケージを書いた でした。 go-sqlrowGo言語で標準パッケージを使用してRDBMSからデータを取ってくるには、以下の様に書きます1。 type Person struct { ID string Name string } db, _ := sql.Open("dn", "dsn") row, _ := db.Query(`SELECT id, name FROM person where id='foo'`) var p Person row.Scan(&p.ID, &p.Name) SQL文を発行するまではいいのですが、最後の行、sql.Row#Scanがくせ者です。 上記の例のように、sql.row#Scanは可変長個のポインタを引

    go-sqlrow
  • Goのstructとinterface - oinume journal

    社内でGo勉強会をやったのでその時に自分が発表した時の内容。オブジェクト指向的なことをGoでどう実現するのか、どの辺を諦めなくてはいけないのかをまとめてみた。 Goでのオブジェクト指向 Goでは基的にオブジェクト指向プログラミングはできないと思ったほうが良い。できるのはstructを定義して関数を追加していくことだけである。 http://play.golang.org/p/7w9nbHDec1 package main import "fmt" type User struct { Id int Name string } // 文字列化する関数 func (u *User) String() string { return fmt.Sprintf("%d:%s", u.Id, u.Name) } func main() { var user *User = &User{1, "oin

    Goのstructとinterface - oinume journal
  • Go言語(Golang) はまりどころと解決策

    Go の言語仕様はシンプルで他の言語に比べてはまりどころが少なくて学習コストが小さめな言語のように思います。しかし、それでもはまるところがないわけではないので、自分がはまって時間を無駄にしてしまったことを書き留めておきます。 念の為誤解のないように追記しておくと、この文書の目的は Go を批判することではなく GoGo であるがゆえに C++/Java/Python など利用者が Go を使い始めるときに困惑あるいは誤解するであろうポイントをまとめておくことで初めて Go を触る人がスムーズに Go を使い始められるようにすることです。私個人は Go はバランスがとれた良い言語でだと思いますし、気に入っています。 目次 interface と nil (Go の interface は単なる参照ではない) 文献 メソッド内でレシーバ(this, self)が nil でないことをチェ

  • Golangを触り始めた② 文法・型 - blue_field

    前回に引き続き、Web+DB vol.82のGo特集が分かりやすいのでそれ見ながら。 ぜんぶ網羅して書いてないけど、メモ。Goのバージョンは1.3.3です。 変数 var message string = "Hello world" 変数宣言は、varで始まり、変数名、型の順。ちょっと違和感。 関数内部で変数宣言と初期化を行う場合は、以下のように:=を利用しても書ける。こっちの書き方を使うことが多そう。変数の型は、代入する値から推論される。 /* import文は省略 */ func main() { message := "Hello world" fmt.Println(message) } 定数は、varじゃなくてconstで宣言。 if 条件部分に()は付けないが、処理部分は{}が必要。 func main() { a, b := 10, 1 if a > b { fmt.Prin

    Golangを触り始めた② 文法・型 - blue_field
  • golang で regexp パッケージを使うときに気をつけること - at kaneshin

    golang の Regexp は初期化の Compile コストがそこそこありますが、実は正規表現のパターンと対象となる文字列によって、初期化コストが無視できる(パターンと文字列に支配される)くらい遅くなります。よく言われる regexp の初期化コスト問題が無視できると言われても、正直、全く嬉しくないですね。 ただ、コーディング中に regexp パッケージを使わなければいけない場面は出てくるため、なるべくコストの掛からない実装を心がけています。 Compile/MustCompile 初期化コストはなくすため、グローバルに保持するようにします。 定義 var re = regexp.MustCompile("[a-z]{3}") func main() { fmt.Println(re.FindAllString("foobarbazqux", -1)) // => [foo bar

    golang で regexp パッケージを使うときに気をつけること - at kaneshin
  • Sinatraライクなgin-gonicで手軽にGolangを試す。 - 俺たちのブログ

    こんにちわ。5号です。Sinatraライクと書いておきながらあんまりSinatra触ったことが無いので全然違ったらすみません。 Golangを試す際にWebAppサーバ作ってみようとする時に軽量なフレームワークで試せるgin-gonicは良いと思います。 gin-gonic/gin · GitHub こちらのqiitaで導入方法は詳細に説明されているのと、 Go - Gin Web Frameworkを試してみたよ - Qiita READMEさえ見たら簡単なサーバはすぐ作れるのですが、せっかくなので今回はGETした時のURIパラメータをそのまま返すWebAppを作ってみます。 main.go package main import "github.com/gin-gonic/gin" func main() { router := gin.Default() router.GET("/:

    Sinatraライクなgin-gonicで手軽にGolangを試す。 - 俺たちのブログ
  • MeCabのGolangバインディングを書いてみた

    GolangからMeCabを呼び出すライブラリ探せばあるにはあるのですが、 なんだかどれもメモリ管理がちょっと怪しいんですよね・・・。 GolangでMeCabを使う。 yukihir0/mecab-go Go言語から mecab を使う - Qiita rerofumi/mecab Go で Mecab を使ってみた メモリ管理はbluele/mecab-golangが一番しっかりしているっぽいですが、 libmecabの一番高機能だけど面倒な使い方しか対応していなくて、ちょっとカジュアルに遊ぶにはつらい。 というわけで、カジュアルな用途から高度な使い方まで対応したWrapperを書いてみました。 shogo82148/go-mecab 使い方 READMEとgodocのexamplesからのコピペになってしまいますが、 簡単に使い方の紹介です。 インストール go getで取ってくるこ

  • Go言語のflagパッケージを使う - ryochack.blog

    Go言語でコマンドラインオプションを扱う - そこはかとなく書くよん。 に触発されたので、flagパッケージについて自分で使ってみてハマったところを書いておく。 コマンドラインオプションの略称を登録する flag.IntVar()などのXxxVar()を使う。 これで -boolでも-bでも同じ変数にフラグの結果が反映されるようになる。 $ go run flag_shorthand.go -bool -int 100 -string hoge bool flag = true int flag = 100 string flag = hoge $ go run flag_shorthand.go -b -i 100 -s hoge bool flag = true int flag = 100 string flag = hoge コマンドラインオプションを最後まで解析する flag.P

    Go言語のflagパッケージを使う - ryochack.blog
  • 1