Go language part 1

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2013/10/10(木) 12:04:51.78
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。
2016/06/10(金) 11:21:56.11ID:+PET1099
>>587
ありがとう
上手く動作しました
2016/06/10(金) 11:28:41.43ID:+PET1099
http://qiita.com/kitoko552/items/a6698c68379a8cd8b999
オブジェクト指向っぽいことを試してみようと思い、上記のページを参考に以下のコード書いてみた
https://ideone.com/3ClfoG

$ go run capsule.go
# command-line-arguments
.\capsule.go:24: invalid indirect of Human literal (type Human)
というエラーが出るんだけどどこをどう変えればいいですか?

やりたいことは、
・カプセル化
・getter, setterの定義
・Embed
2016/06/10(金) 11:50:51.12ID:DB1UcVrL
return *Human{



return &Human{

にする
2016/06/10(金) 12:35:52.40ID:xyNxE4XD
go playground使おうぜ実行できるし

https://play.golang.org/p/8pEGG3kdhH
2016/06/10(金) 22:32:36.41ID:+PET1099
>>590
ありがとう
2016/06/11(土) 01:51:48.80ID:vokBGi10
>>587
https://ideone.com/rGIVZU
このような場合は上手くいったけど、

https://ideone.com/86I4on
このように、構造体に2つの構造体が埋め込まれていて、それらに更に動的にメンバ変数に値を入れていくとなるとどうすればいいのか悩んでるんですが
コメントで★を入れた部分はどのように記述すれば良いのか全く分からず半日くらい費やしてます(苦笑)
2016/06/11(土) 02:54:26.06ID:ncrPm/bC
とりあえずは即時関数で。

return &Profile{
mine: func() (m MyProfile) { m.SetProfile(arr["me"]); return }(),
yours: func() (y YourProfile) { y.SetProfile(arr["you"]); return }(),
}
2016/06/11(土) 12:57:03.40ID:5N4sydIU
>>594
ありがと
本当に助かりました
自分には浮かばない発想でした

しかし、一つ聞きたいのは、
func NewProfile(arr map[string]map[string]interface{}) *Profile {
var m MyProfile
var u YourProfile
return &Profile{
mine: m.SetProfile(arr[
2016/06/11(土) 12:58:26.45ID:5N4sydIU
>>594
ありがと
本当に助かりました
自分には浮かばない発想でした

しかし、一つ聞きたいのは、
func NewProfile(arr map[string]map[string]interface{}) *Profile {
var m MyProfile
var u YourProfile
return &Profile{
mine: m.SetProfile(arr['me']),
yours: u.SetProfile(arr['you']),
}
}
はダメなのに、なぜ
func NewProfile(arr map[string]map[string]interface{}) *Profile {
return &Profile{
mine: func() (m MyProfile) { m.SetProfile(arr['me']); return }(),
yours: func() (u YourProfile) { u.SetProfile(arr['you']); return }(),
}
}
は可能なのかな、と
SetProfile()自体が関数なのに、なぜわざわざ無名関数使って内包したSetProfile()を呼び出さないと上手くいかないんですかね?
2016/06/11(土) 13:19:00.18ID:ncrPm/bC
色々書き換えたバージョン
http://ideone.com/5rnnHW
2016/06/11(土) 13:26:31.32ID:ncrPm/bC
>>596

m.SetProfile(arr['me'])

この場合、副作用だけ(オブジェクトに値がセットされるだけ)なので、
return m とする(オブジェクトを返す)必要があるのです。

とは言うものの、SetProfile はメソッドではなく通常の関数でも良いのでは?
と思ったので http://ideone.com/5rnnHW ではそうしています。
2016/06/11(土) 13:44:39.08ID:5N4sydIU
>>598
なるほど、良く分かりました
別の方法も教えていただきありがとうございました
勉強になりました
2016/06/11(土) 14:12:16.15ID:JfIPVaDb
>>590
func NewHuman(name string, jobname string, position string) Human { return Human{ 〜
としても動くけど、これだと値渡しになって
h1 := NewHuman("Shinzou Abe", "politician", "prime minister") 呼んだときにも
中で1回コピー起こって無駄だから参照渡しにするってことでいいの?
2016/06/11(土) 22:32:52.72ID:oEY46iar
Javaで言う、ScannerのNextInt()みたいなのってGoには無いの?
bufioのText()しか調べても出てこないんだけど、これを型キャストしろってことなのかな?

scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
n := scanner.Text()
これをn.(int)って感じ?
2016/06/11(土) 23:01:07.51ID:oEY46iar
型キャストというより、ParseInt()だね、ごめん
2016/06/17(金) 15:30:55.46ID:De9+BeR4
出た。

プログラミング言語Go 
Alan A.A. Donovan, Brian W. Kernighan 著
柴田芳樹 訳     
発行元:丸善出版(株)
2016/07/10(日) 22:27:22.81ID:znpcZSb6
var t *time.Time = & time.Now()
とやると
cannot take the address of time.Now()
って出るんですけどなんでダメなのか教えて下さい
2016/07/15(金) 07:53:12.02ID:nL6yLCLX
>>604
t := time.Now()
2016/07/15(金) 11:24:05.90ID:tpc0LssI
t := & time.Time{}

ts := time.Now()
t := &ts
みたいにアドレスで変数に保管したいってことだろ

ttps://golang.org/ref/spec#Address_operators
言語仕様上、&演算子が変数か構造体(のコンストラクタ)しか認めてない感じ?
実態の持ち主が行方不明になる可能性があってGCが動かなくなるのかねぇ
2016/07/17(日) 03:13:59.59ID:rRft+gba
ポケモンGOとコラボしてGopher出してもらおうぜ
このビッグウェーブ、乗るしかない
2016/07/17(日) 17:14:53.70ID:Nge5kW2D
Gopher君がswiftするのか
2016/07/18(月) 12:14:48.69ID:nr1pGxnF
Golangius II 〜Gopherの野望〜
2016/07/20(水) 00:44:12.39ID:7krjkQOF
1.6.3が出てた
2016/07/20(水) 21:59:45.12ID:ZQpbH517
golang でWeb開発してる人にお聞きしたいんですけど
db周りってどうしてますか?
tableごとに構造体を用意した場合、単純に1tableをSELECTする分にはなんの問題もないんでしょうけど
joinしまくってた場合、各クエリごとに構造体を作ってる感じでしょうか?
そんなのだるいですよね。
どうしてるのか教えて下さい。
2016/07/21(木) 18:53:09.50ID:Vj/xPVWN
mongoDB
2016/07/22(金) 08:29:35.69ID:eNFBzZ6U
golangとかgo言語をスレのタイトルにしないとググりづらいな。
614デフォルトの名無しさん
垢版 |
2016/07/22(金) 13:59:08.89ID:f6dSUOKk
pokemon Go Go
2016/07/22(金) 14:02:04.61ID:hQsD+JBa
Go の偽物出まくってるなω
616デフォルトの名無しさん
垢版 |
2016/07/23(土) 14:35:34.70ID:6lYjBmg5
Ninjin Go
2016/07/25(月) 01:34:14.20ID:gKUS+J/f
(´・ω・`)スキーマを作るツールで構造体を更新してる
2016/07/25(月) 09:12:05.48ID:aFElPnA5
それってxoのことです?
SELECTの時はどうしてます?join禁止?
619デフォルトの名無しさん
垢版 |
2016/07/25(月) 09:19:11.89ID:l5ht4z0Z
selectするカラムのサイズのインターフェース型の配列を作って渡すじゃだめなの?
2016/07/25(月) 10:20:31.42ID:RKFFw9Lx
コードをチェックするときに
gofmtとgolintを設定したんですが両方共エラーがあった時に同じエラーを吐きます
どっちか一つでチェックさせれば良いんでしょうか?
2016/07/26(火) 12:09:28.79ID:oKnTJYes
いいね
https://developers.eure.jp/tech/go-appengine-sql-waf/
2016/07/29(金) 12:02:23.83ID:eVXiLh5P
github死んだらgoどうなってしまうん?
2016/07/29(金) 16:21:55.80ID:vOn8ke2v
進化して gone になるよ
2016/08/03(水) 12:29:51.75ID:48QXmcl+
この言語についてすこし気になっています。
例えばC言語のようにビット単位での操作などはできますか?
言い換えると、組み込みやOSカーネルのプログラミングなどは視野にあるのでしょうか?
またはC言語を完全に置き換える存在になりえますか?
625デフォルトの名無しさん
垢版 |
2016/08/03(水) 13:17:02.98ID:mbys/AN5
goよりgithubの方が長生きするんでね
626デフォルトの名無しさん
垢版 |
2016/08/03(水) 13:18:36.00ID:mbys/AN5
>>624
Windows用のDLLがc-sharedで作れるようになればなー
2016/08/03(水) 23:48:20.25ID:MhEWRRuh
>>624
gc前提の言語だからあり得ない。
選ぶとしたらrustとかじゃないかな
2016/08/04(木) 01:10:59.73ID:BIHJkeI+
GC前提っていうけど、objective-cやswiftみたいにARCでリソース解放してやることはできないのかな?
2016/08/04(木) 11:14:28.20ID:Ul5WpRfd
>>628
GCを切るというオプションはないと思う
そういう小回りを聞かせたいならrustとかC++を選ぶしかない。
630デフォルトの名無しさん
垢版 |
2016/08/04(木) 11:56:34.90ID:8anV95gh
gokiburi
631デフォルトの名無しさん
垢版 |
2016/08/04(木) 11:58:01.10ID:8anV95gh
OSだってそれ自身でGCやってるしなー
作業中にいきなり固まってHDDゴロゴロ言わせて
時計も止まってマウスも動かない
30分くらい放置してたら治ったり
2016/08/04(木) 12:59:03.09ID:SddwJFqD
GCはオプションではないようですね。
もうすこし調査が必要なようです。
ありがとうございました。
2016/08/05(金) 10:46:10.99ID:DVDTMi5M
>>631 それスワッピングだろ
2016/08/05(金) 10:46:42.21ID:DVDTMi5M
swappingをカタカナで書いたらあぼーんされた
2016/08/05(金) 11:02:44.30ID:h08emFzO
>>633
メモリが足りなくなった時にキャッシュを解放して、コンパクションを走らせてるという動きは似たようなもの、と
言いたかったんじゃね?
2016/08/05(金) 13:39:10.50ID:r9Q5JMfz
ちょっとだけスレ違いかもだけど
kindle unlimitedとかいう電子書籍読み放題プラン始まって
技術書みてたらgoの入門書1.6対応版みつけた。
ttps://www.amazon.co.jp/dp/B01FH3KRTI/ref=cm_sw_r_tw_dp_x_TwbPxbN1BHQKM

結構読みやすい。
2016/08/06(土) 00:06:34.76ID:ukQkptRq
IT関連は今のところ、ほぼその本出してる翔泳社だけかな?
アメリカの方探してみたけど、そっちはどこも参加してない気がする。
638620
垢版 |
2016/08/06(土) 17:15:53.39ID:TNYUaRVo
どなたかおねがいします
2016/08/06(土) 22:25:22.14ID:i/Otvl/9
Purpose
Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes.

https://github.com/golang/lint/blob/master/README.md

golintのreadmeでは、上のような説明になっていた。

こういう記事を参考にしてみるといいかも。
http://blog.amedama.jp/entry/2016/03/31/222050
2016/08/24(水) 21:36:46.93ID:JcWOBO6t
loopのネストが多いと、go1.7で遅くなるらしい
SSAの関係で。

ttp://shinpei.github.io/blog/2016/08/13/what-ssa-brings-to-go-17/

俺のプログラムも遅くなった。。。orz
2016/09/18(日) 18:26:45.57ID:5S/llOjA
Goの型システムが貧弱とかよくdisられるけど
ジェネリクスが無い以外はわりとイマドキな言語だと思う
interfaceは構造的部分型付けっぽいし
既存の型に別名付けて拡張出来るし
2016/09/18(日) 21:51:09.47ID:FLMBUfED
まともなラムダ式もmap関数もない言語がイマドキ?
2016/09/18(日) 22:41:40.24ID:20H6rWEl
RoRライクなGoのWebFWで軽量なものはどれでしょうか?
2016/09/19(月) 01:20:18.20ID:uQftjblX
イマドキではないな。
既視感あふれる感じ。
レシーバで関数書いていけるのが1番気持ちいい。気が狂ってからのLispみたい。
チャンネルは凄く楽だし。

>>641
ジェネリクス、あったら良いなと思うけど、無くても、型名にいちいち名前つけて、適当にインターフェイスに参加させていけば、割としっくりくるスライスになるよ。
2016/09/19(月) 15:39:21.23ID:yKbgweKY
>>643
golang railsでググったら適当に出てくるけど調べたの?
2016/09/19(月) 16:25:57.74ID:UScDXP8E
もちろん調べました。
revelとbeegoですね。
ただこれは重いらしいので、あと使用雑感とか日本人の意見を聞きたいのですが。
2016/09/19(月) 18:10:05.55ID:7Lx9kgsv
>>644
一応ジェネリクスは検討中ではあるんだよね。
結構あったらいいのにという場面はある。
それ以外は割といい感じ。エコシステムがいい。Editorも今や静的言語のメリットちゃんと享受できるし。
VSCいい。
2016/09/19(月) 20:06:21.83ID:6UZeJb4L
>>646
自分で使ってみればいいんじゃない
2016/09/19(月) 20:43:34.00ID:UScDXP8E
あ、このスレたってから3年もたってるんですね
サボって使用雑感なんて期待しちゃいけない感じか
しょうがないから自分で検証してみます
2016/09/19(月) 23:21:43.10ID:7Lx9kgsv
>>649
ここには大した有識者はいないと思う。
かと言ってどこにいるんだろうね?twitterに投げてみるとか
2016/09/20(火) 00:29:26.51ID:dodRqZqD
サービスやってるとこので聞くのは、LL言語のフルスタックフレームワークから、SPAと軽量なapiサーバーへの移行みたいなのが多いイメージが。
なのでrubyからだと、sinatraっぽくmiddleware分離したいとか、migrationツールは別に用意みたいな話の方が多いかも。

http://blog.parse.com/learn/how-we-moved-our-api-from-ruby-to-go-and-saved-our-sanity/
https://www.slideshare.net/yujiotani16/gorevel-51949206
https://developers.eure.jp/go-language/advent-calender-7/
2016/09/20(火) 13:57:24.92ID:aC9BpWa+
ここまでGoogle社員の書き込み
2016/09/21(水) 12:11:38.43ID:cQpnCnIx
重いらしいじゃなくて何で自分で試さないの?
2016/09/21(水) 12:36:40.08ID:bQEJ8r3q
重いかどうかが問題になるレベルまで試すのは現実的に無理があるだろ
まあそもそもほとんどのアプリは使っている言語やフレームワークが重いかどうかが問題になる前に消えるわけだが
2016/09/21(水) 13:18:40.11ID:WoI1CsQe
どうせPとかRがつく言語からの乗り換えでしょ?
どれ使っても軽いって
2016/09/21(水) 13:40:44.80ID:K/wMuhbh
>何で自分で試さないの?
比較対象がわからないからだろ
2016/09/21(水) 15:42:52.36ID:DBqUEw9E
>>656
比較対象が何かわからないなら
awesome go とかで検索すればいいよ。
https://github.com/avelino/awesome-go#web-frameworks
アホみたいにフレームワークがあるけど
2016/09/21(水) 16:03:39.59ID:1PEot0Hq
ID変えて自演してるような気もするけど
ベンチマーク取れば重いかどうか数字で表せるよね
2016/09/21(水) 16:57:31.37ID:/5f1YfeX
枯れ木も山の賑わい
2016/09/21(水) 18:46:11.33ID:K/wMuhbh
>>657
そのリストじゃRails風かどうかまではわからないからな
それを調べるためだけに1個ずつインストールしてまで使う労力を求めてる不親切なコミュニティだわ
まあそれが日本でのGoのあり方なんだろうが
2016/09/21(水) 20:55:56.41ID:WoI1CsQe
キリッ
2016/09/21(水) 21:15:31.01ID:DBqUEw9E
>>660
readmeくらい読めばいいよ。
なにを参考にしたフレームワークくらいかはわかるでしょ
2016/09/21(水) 23:06:50.01ID:C/0XZtBi
ActiveRecordのつくり込みしてない実装は意外と面倒だったりするんだけど、goで使ったことないのでわからん。
クエリービルダーなら何かあるかも。
複数テーブル使うこともないので、今のところDBまわりは簡単にDTOみたいな実装で済ましてる。
2016/09/22(木) 01:47:25.32ID:QBrMY9aw
自分が欲しい物を他力本願で自分で調べない奴はプログラミングに向いてない
2016/09/22(木) 02:57:18.49ID:nr+L07o8
そうですか
2016/09/22(木) 08:30:29.12ID:hF82WAHq
うむ
667デフォルトの名無しさん
垢版 |
2016/09/22(木) 10:18:25.14ID:7A/wc93b
railsみたいなのがいいならrails使っとけばいいだろ?
なんでgolang使おうと思ってるの?
2016/09/22(木) 11:10:54.24ID:y4xL8ywB
Goは基本的にCなので、ゼロから作りこむような複雑な処理がそのまま移植できる。
Rubyだと、extensionをCで書かないといけなくなる。
2016/09/22(木) 11:24:25.38ID:sBPmoePF
goでDB扱おうとすると動的言語のほうが楽だと痛感するけどね
単純なテーブルに対するcrudなら構造体作って対応できるけど
joinしたりとかすることも考慮するとそうも行かない。
素直にrailsでいいんじゃね
2016/09/22(木) 13:36:58.94ID:3pIcfs21
ORM使うからじゃないの?
JOINして使う結果とJOINせず単独で使う結果はそれぞれ別の構造体になってしかるべきな気がする。
あんまRDB使わないけど。
集合検索結合集計なシステムと手続き型とオブジェクト型と関数型、どれ同士を組み合わせても、インピーダンスミスマッチは仕方ないんだから、どっちかで歩み寄らなきゃ何ともならんような。

階層型とばっかり組み合わせてるけど、言語側はわりと世代交代早いからDB側でストアド書いてるわ。
2016/09/22(木) 15:05:14.76ID:Ob4qBdWH
時代はとっくにKVSですが
2016/09/22(木) 15:18:49.00ID:W5CYuFDy
KVSとRDBじゃ微妙に用途違うじゃん
2016/09/22(木) 15:19:40.46ID:sug0rqOR
mvcではなくrails的なもので高速という話なら、goで探すよりphoenix framework/elixerみたいなのを先に触った方がいいのでは。
2016/09/22(木) 15:29:49.16ID:nr+L07o8
検索系ならRDB一択やろKVSでも実装はできるけどめんどくさすぎ
2016/09/22(木) 15:32:16.50ID:sBPmoePF
RDBからKVSに行ってやっぱRDBがいいやと言う流れじゃないの?
mongodbとか使ってるやついるのか今
2016/09/22(木) 21:41:56.84ID:sBPmoePF
>>670
結局ビジネスロジックをどっち側に寄せるかという話になるんだろうけど
ストアドプロシージャは素朴なコードしかかけないから抽象化しづらいと思うんだけど
書いたことがないから想像でしかないけど。

でもgolangの場合は抽象化しきれないからストアドプロシージャ側にロジックを寄せて実装はありなのかもしれない
2016/09/22(木) 22:16:03.79ID:243X6jbN
クロスコンパイルとかでpure goにしたければ、KVSしかない。
678デフォルトの名無しさん
垢版 |
2016/09/22(木) 22:24:25.35ID:7A/wc93b
phoenixも速いよ
pingだけだったらレスポンスμsで返ってくるよ
2016/09/22(木) 23:18:15.37ID:P28LZX5F
>>677
イミフ
Pure Goなdatabase/sqlのドライバは沢山あるがな
2016/09/23(金) 11:19:01.19ID:iqtk0HU6
>>679
多分だけどpureGoでkvs側もgo製のをつかってkvsも含めてワンバイナリにしたいってことなんじゃない?boltとか
2016/09/23(金) 14:15:45.15ID:Pu19XfH5
>>676
割と書けるよ。ただ、パワーバランスにもよるけど。
番号発行を伴う複数の関連するデータの保存や削除なんかはDBに任せた方が良い場合もそこそこある。
テキトーにORMで雑然と入れがちだけど、根本的にオブジェクトと行が一対一にならなければ、一対一の操作やらビューを用意すべきだと思う。
2016/09/24(土) 11:16:44.44ID:oYgGfkv1
>>675
人気はそこそこある模様
http://db-engines.com/en/ranking
2016/09/24(土) 17:55:17.45ID:cuT9UNDj
慣れてるしmongodb使ってるよ
sqliteのほうがよく使ってるけど
2016/10/04(火) 16:24:32.16ID:m5Lh6Epv
>>541
70過ぎで新しい言語覚えるとか凡人には無理そうw


Brian Kernighanがプログラミング言語Goの組版に使ったのはなんとtroff
https://cpplover.blogspot.jp/2016/04/brian-kernighangotroff.html?m=1
685デフォルトの名無しさん
垢版 |
2016/10/04(火) 16:39:32.48ID:ZPmHgmj0
>L&RのKであり

冒頭からアホ丸出し
686デフォルトの名無しさん
垢版 |
2016/11/02(水) 12:09:01.86ID:txovE4qH
Go言語のゆるキャラ何だよあれ。
ゆるキャラのデザインは言語の普及率に無関係じゃないと思うぜ。
2016/11/02(水) 12:42:22.12ID:pD2pdTer
俺もあのキャラで食わず嫌いしてた
今でも見るたびにぶん殴りたくなる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況