[過去ログ] Go language part 1 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
31: デフォルトの名無しさん [sage] 2013/11/10(日) 18:50:31.27 AAS
>>2929(1): デフォルトの名無しさん [sage] 2013/11/10(日) 12:21:03.86 AAS
とりあえずGoの使いどころがわからない
大規模開発だな。
言語仕様的に、別人が作ってしまって手が付けられないライブラリーでも
型がinterfaceに対応してないから、
委譲用のコード書かなきゃいけないとか、
ポインターに委譲するのに関数から同じ名前の関数に引き数を
渡す処理を書くとかしなくて済むようになってる。
111(1): デフォルトの名無しさん [sage] 2014/07/05(土) 14:41:39.27 ID:t0Gvg/Rs(1) AAS
気持ちはわからなくもないけどねえ
16Gや32Gストレージなんて当たり前なところで、OSが多少増えてどうこうと言われてもさすがに
305: デフォルトの名無しさん [sage] 2014/08/09(土) 22:08:08.27 ID:bNAhKStf(1) AAS
HSPにすら負けるマイナー言語
497: デフォルトの名無しさん [sage] 2016/01/27(水) 21:33:03.27 ID:hT8Bs+OE(2/2) AAS
と思って prime.rb を参考に改良した
$ time ./prime
1853028778786433 is prime!./prime4 0.18s user 0.01s system 98% cpu 0.189 total
いい感じ!アドバイスくれた人サンクスでした
コード: 外部リンク:play.golang.org
728: sage [] 2017/01/22(日) 00:26:49.27 ID:JSjE+wfT(1) AAS
流行りの機能あんまり無いし使い辛そうと思ってたが
書いてみるとしっくりくるな、良く出来てる
748: デフォルトの名無しさん [] 2017/02/18(土) 18:32:44.27 ID:HTn/aT5C(1) AAS
version1.8が出たらしいね
>>704-708の問題はどうなったんだろ?
752(1): デフォルトの名無しさん [sage] 2017/02/21(火) 01:20:47.27 ID:D3dspysh(1) AAS
i := []int(nil) とか
938: デフォルトの名無しさん [sage] 2017/08/18(金) 09:03:43.27 ID:+X0+m8dy(1/2) AAS
>>937あれは要らないって言ってるわけじゃなくて無くても筋力で頑張るって言ってる
957(1): デフォルトの名無しさん [sage] 2017/08/26(土) 19:58:41.27 ID:7lTOqKMJ(1) AAS
>>956golang.jpは古いしメンテされてなくて放置されてるので見ないように
974: デフォルトの名無しさん [sage] 2017/11/11(土) 09:52:19.27 ID:LLMRc4SD(2/9) AAS
>>973973(1): デフォルトの名無しさん [sage] 2017/11/11(土) 07:08:21.29 ID:qi+awpQj(1) AAS
>>972
Goにとっては、要素がポインタではなくてただの interface{} に見えている。
なのでデリファレンスできないというエラーになる。
方法としてあるのは、th := []*interface{}{...} にする方法。
ポインタの配列と宣言しているので、要素のデリファレンスが可能。
もしくは、要素ごとに、デリファレンスする前に、*intとかに型アサーション(ググって)をする。
その後でデリファレンスする。
最終的にはいけました。ありがとうございました。
> th := []*interface{}{...} にする方法
th := []*interface{}{new (int32), new(string), new(string)}
// cannot use new(int32) (type *int32) as type *interface {} in array or slice literal: *interface {} is pointer to interface, not interface
// cannot use th (type []*interface {}) as type []interface {} in argument to rows.Scan
これは駄目でした。new (int32)がポインタ配列に何故か入れられないという謎仕様?
全ての型はemptyインタフェース interface{} を実装しているのに、
全てのポインタ型はemptyインタフェースへのポインタを実装してない?
(rows.Scanでは受けられないというのはこちらの話ですが)
まあ今の段階ではよく分かりません。
> 要素ごとに、デリファレンスする前に、*intとかに型アサーション
fmt.Println(*(th[0].(*int32)), " ", *(th[1].(*string)), " ", *(th[2].(*string)))
こちらはいけたのですが、しかしこれではなあと。個別べた書きでは意味無いんですよね。
本当は構造体で受けたいのですが、sqlxしかないのかなあと。
(sqlxは内部で使用しているであろうリフレクションが遅そうでいや)
Goはリフレクションが遅くないとかいう落ちってあります?
リフレクション用のタグを別装備しているし、静的にリフレクションしてたりします?
というか動的言語(PHP/JavaScript)からの移植がこんな初歩的なところで躓くのは想定外でした。
動的言語前提の構造になっているとかなり辛いですね。
json周りでも同様のことが想定されますし、そのための型スイッチってのも何だかなあ、という気がします。
愚痴になってしまってすいません。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.045s