[過去ログ] Go language part 1 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
37: デフォルトの名無しさん [sage] 2013/12/03(火) 22:24:45.52 AAS
>>36インストールしたサードパーティ製ライブラリのドキュメントも見れるから本家より便利
254: デフォルトの名無しさん [sage] 2014/07/30(水) 07:50:42.52 ID:/fpjt/6K(1/2) AAS
>>251 >>252でもRustやDは全然普及していないという決定的に致命的な欠点があるよな
328: デフォルトの名無しさん [sage] 2014/09/01(月) 15:58:36.52 ID:SaUWCY70(1) AAS
インタフェースで良いじゃん
既に継承はレガシー化しつつある
Cジジィと言ってた世代がもうすぐ自分がジジィ呼ばわりされるのさ
511(1): デフォルトの名無しさん [] 2016/02/18(木) 17:06:46.52 ID:45GMtAZP(1) AAS
1.6は少し難産だったかな。
708(2): デフォルトの名無しさん [sage] 2016/12/22(木) 04:50:05.52 ID:jVrDGj21(1) AAS
>>705-706
結果を報告します
ダウンロードしたgo1.7.4.windows-386.zipのSHA256のハッシュはサイト上のものと一致しました
zipを展開しtrace.exeだけをVirusTotalにアップロードしました
ウィルススキャン56個中13個がTrojan判定したみたいです、多数決という考え方でいえば誤検知だったのだと思われます
外部リンク:www.virustotal.com
764: デフォルトの名無しさん [sage] 2017/03/06(月) 00:27:53.52 ID:8ia6O09M(1) AAS
なんだよglideがデファクトかと思ってたのに公式から出たんか。
879(1): はちみつ餃子 ◆8X2XSCHEME [sage] 2017/07/14(金) 02:04:24.52 ID:I4VxJiDM(1) AAS
>>877ラバーダックデバッギングってやつ
899: デフォルトの名無しさん [] 2017/07/18(火) 00:42:33.52 ID:L9UQruVY(1) AAS
>>887すごく同意
905: デフォルトの名無しさん [sage] 2017/07/20(木) 16:14:08.52 ID:hN2WxidD(1) AAS
そうそう、ダメダメなんて抽象的なこと言ってても放置されるだけだってね
具体的な体験レポートを提出して説得しろってさ頑張れよ
924: デフォルトの名無しさん [sage] 2017/08/17(木) 11:47:09.52 ID:lJ+MJ24Q(1) AAS
ジェネリクス追加せずとも型推論強化でなんとかかんとか
944: デフォルトの名無しさん [] 2017/08/18(金) 19:03:33.52 ID:PB7aU8rD(1) AAS
>>943違うよ
そのスレ初めて見た
978: デフォルトの名無しさん [sage] 2017/11/11(土) 13:51:58.52 ID:LLMRc4SD(3/9) AAS
>>977977(1): デフォルトの名無しさん [sage] 2017/11/11(土) 13:33:59.14 ID:proXGFSN(1/3) AAS
phpと同じ感覚でgoでdatabase使おうとすると死ぬよね。
結局go側とsql側のスキーマ二重管理になるから、そのままphpと同じノリで使えない。動的言語と静的言語の差だね。
じゃあどうするかというとsql側のスキーマからgoの構造体をコード生成する。
xo とか使う。
外部リンク[html]:tdoc.info
自動コード生成ツールか。まあPHPとGoを同時使用するのならありでしょうな。
ただまあ、俺の場合はそうではなく、Go内で二重管理するのが気に入らない。
俺が試しているのは掲示板なんだが、PHPの場合は結局、
echo json_encode(fetch_all($db,"SELECT * FROM threads;")); // fetch_allは全読み関数
だからリード側はDBの型依存が全くない。(何が入っていても中身を全部吐き出すだけ)
結果、新規機能追加の場合はライト側の変更だけでよく、変更は1箇所で済む。
Goだとリード側も変更が必要になるのが気に入らない。
だから構造体に押し込んで、リードもライトもその構造体ベースでやれれば変更は1箇所で済む、
ということを考えているのだが、これはSQLの構造上厳しそうだ。
今sqlx読んでいるが多分無理だね。
986: デフォルトの名無しさん [sage] 2017/11/11(土) 16:18:54.52 ID:LLMRc4SD(6/9) AAS
というか、これはAPIが足りてないんだね。
(以下コードは文法があやふやなので参考程度で)
database/sqlはScanを使うのが定番のようだが、Scanではargsの可変長指定しかないのがいけない。
だから構造体の中身を確認するのにリフレクションが必要になってしまう。
type Thread struct {
no int
time int
body string
}
th := Thread{}
rows, err := db.Query("SELECT * from threads;")
err = rows.Scan(&th.no, &th.time, &th.body) // ここでばらすから中身を知らないといけない
とりあえずScanが構造体を受け、その構造体にScannerインタフェースを実装する方式なら、
リフレクションは回避出来るし、おそらく最高速度で動く。
ただ、このためのAPIがない。
err = rows.Scan(&th) // ばらさずに構造体を与える
func (th Thread) Scan(src interface{}) err // 各構造体でばらす。手間は増えるが最速のはず
DBを生で叩いたことがないから知らないが、DBからの出力が既に配列なのか?
或いは同様のことはポインタ配列で受ければいいので割り切ったか。(972参照)
>>984984(1): デフォルトの名無しさん [sage] 2017/11/11(土) 15:36:08.28 ID:proXGFSN(3/3) AAS
>>983
>動的言語の場合は既に言われているようにスキーマ管理が一元化出来る
>(正確にはやらなくてもそのまま動くだけだが)
> 分だけ書く量は少なくて済む。
> プロトタイピングには動的言語の方が向いてる。
同意する。Goでデータベース操作の決定版がでないのが物語ってる。
逆にGAE/goのdatastoreを使うときはGoとの相性の良さを感じる。
スキーマがGo側に設定することが決まっているから。
GAE/Goはググってみたがよく分からん。
ただ今回はCREATE TABLE部分も自前で持つ為、スキーマ管理はGo側でも「本来は」出来る。
SQLの構造上、CREATE TABLE と INSERT はほぼ同じなのでPHP等ではSQL文字列を共有出来る。
だから1箇所にしか書かずに済んでた。ところがGoはリード側も必要だからぐぬぬ、ってなってる。
997: あ [sage] 2017/11/11(土) 19:26:19.52 ID:X8lWnCzG(8/11) AAS
Go language part 2
2chスレ:tech
あんまり立てないから間違ってたらごめん。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.066s