どうも、@CreatorQsFです。我が家にもやっと春が舞い戻ってまいりました。 さて、僕はもともとCとPHPとMySQLでサービス作ってた人です。そんな中で世紀末ぐらい困ったことが会ったので記しておきます。 まず、PHPでの時わたしはDB関連は全て自作していました。これでも一応SQLかけるので。 ですが、Goに変えてからgithubなどのLibraryを積極的に使うようにしています。フレームワークも今はrevelを使ってます(╹◡╹) そして、当然のごとくgorpを使いはじめるわけなんですが…これが意外と難しい。というよりPHPの成り上がり下克上果たせなかった系Goプログラマには結構問題点が多くて。私自身にですが。 まず、DBを使うのに、structと組み合わせるためにマッピングしなきゃならない。いや正確に言うと、今まではDBから取得したらそれが自動的にオブジェクトに落とし込めていたので、なんか気にすることなかったんですな。 だけど、最近のモダンなやつ見てるとどうもそうでもないらしい。構造体を作ってそこに落としこむのが主流なのかな。 ってことで、やってみたのはいいものの… …動かないっす先輩。 思ったとおりに行かないっす 原因は、MySQLのcolumnにNULLが含まれているためでした。そこで、sql.NullStringの存在を知ります。 で、それを for _, l := range list { p := l.(*models.A) fmt.Printf("%d,%t, %s\n", p.Id,p.Status,p.Url) } こんなかんじに調理したとします。 この青四角のところが大問題なわけで、最初こう書きました。 result string = p.Url そうすると、みんな大好き型エラー。 で、次にこう。 result string = fmt.Sprintf("%v",p.Url) いや、動いたんですけど…。問題はそうじゃなくて、吐出されたものがめちゃめちゃに汚い。オエッの方じゃなくて。 で、なんじゃこりゃと思って、次...
Googleの新しめの言語Goについてゆるーく書いてます