Go language part 5

■ このスレッドは過去ログ倉庫に格納されています
2022/02/27(日) 07:43:20.04ID:uWHjNeVw
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。

公式
https://golang.org

公式ドキュメント
https://golang.org/doc/

公式外パッケージドキュメント
https://godoc.org

ブラウザ上で試し書き
https://play.golang.org


※前スレ
Go language part 4
https://mevius.5ch.net/test/read.cgi/tech/1605467680/
2022/03/12(土) 13:29:40.57ID:JgaGU6xu
>>96 読んでみたが、なるほどここと同じような話が展開されてる。
ただ、C11に移行しようとしてるじゃないか。 >>202
> https://mevius.5ch.net/test/read.cgi/tech/1638086359/542
> トーバルズ氏、Linuxカーネルを「C89」から「C11」コードに移行する準備
> https://japan.zdnet.com/article/35184296/
このペースならあと10年はRustなんて入らないね。


>>208
> それは知識が足りていない
これはその通り。俺はRustやる気はないし、借用だ何だかんだの顛末を見て、様子見する事にした。

C++で既に慣らした奴ですら戸惑うのは、
自然な(直感的な)ライフタイムと言語の管理機能がマッチしてないからだよ。

そもそも俺はCでもメモリリークに困った事はない。
ただこれは「困らない範囲でやってる」(=ごくごく安全運転に徹してる)からであり、俺が賢いわけではないが。
この辺の「安全運転を強いられる」のが嫌でC++的にやりたいのも分かるし、Rustも良い実験だとは思うが、
余計な事を考えて、しかもそれでコンパイルが通らない事に悩まされるのは、そもそも設計が悪いからだよ。
つか、そんな事で悩むくらいならGCの方がいいから、実際ほぼ全部の言語はGC持ってるわけだし。

GCの問題点は色々あるけど、discordについては、Goに「GC非対象」を明示する構文があればGoのままで行けてたはず。
何も考えたくないんだよ、っていうGCの思想に反するけど。
Goはポインタのキャストって出来たっけ?出来るのなら、自前で大きめに確保して(数百MB)、
そこから小分けするmalloc/freeを用意してやれば済む。(現行の機能だけで出来る)
システムプログラミング言語だ!OSだって書けるんだ!って言ってるんだから、まあ何とかなるんだろうけどさ。


>>207
魔合体されてるVC++が見た目異様なだけで、
gcnewは単にgc対象ヒープから取るだけ。使い方はGC言語のnewと同じ。
(&*が既に使われてるから%^になってて初見で拒絶されるのは仕様)
2022/03/12(土) 13:30:00.30ID:JgaGU6xu
>>211
96読んだ。俺は移動に同意でいいが、移動する権利は相手に与える。
つまり、レスが投下されたスレに俺もレスを投下するから、
俺にレス付けるなら、やりたい方のスレでレスしてくれ。
2022/03/12(土) 13:48:18.60ID:ARhhT+a7
>>212
全てのプログラミング言語の中で
コンパイラメッセージが最も親切でわかりやすく修整点も具体的に指摘してくれるのがRustコンパイラ
この状況でどうしてもコンパイルが通らないのだとしたら知能がよっぽど低いのではないだろうか?
標準的な知能があれば問題とならないような点でつまずいたのかね
2022/03/12(土) 18:45:21.44ID:IpH8+wiy
>212 >213 >214
>>96
とっとと行け。スレ違い続けんな。
2022/03/13(日) 17:26:43.65ID:fVzSesSr
ワッチョイ無いとほんと不便ね
2022/03/15(火) 11:20:02.60ID:9ud1N6mP
Goってどうやって勉強すればいいの?
218デフォルトの名無しさん
垢版 |
2022/03/15(火) 11:47:39.11ID:UpdRUhUR
>>217
Goに限らんけど俺の場合は実際に動くコードの載ってる本で写経しつつ読み進めるのが一番短時間で覚えるみたい。
俺って頭じゃなく体で覚えるタイプなのかも。
結局、文法的なものは他の言語触った経験あれば新しい言語も難しくないんだけど、キーワードの要不用やライブラリやそれの使い方とか、その辺記憶するのが一番面倒。
2022/03/15(火) 11:58:47.19ID:9ud1N6mP
>>218
やっぱ自分の能力次第だよな。
俺はなんかサイト一個作ったほうが覚えられそうだから作ってみるわ。
何作ろう
2022/03/15(火) 12:36:58.99ID:sRZMI6dS
標準的なソースコードを集めたコードサンプル集とかあればいいんだけどな。
2022/03/15(火) 13:34:26.14ID:DIDzUA9i
ハイエンドというほどじゃないが、みんなのGo第二版はよく参考にしてる
flag使ったときとか

でも言いたいのは多分、ファイル読み込みとかごく基本のコード断片だろなー
2022/03/15(火) 14:08:20.21ID:/twmJcjK
https://qiita.com/takehanKosuke/items/9034e3d993df337eb669
こういうのの巨大なバージョン、誰かgitに公開してたりしないかね
2022/03/15(火) 15:44:18.88ID:DIDzUA9i
テーブルドリブンテストはなんか標準かでGenerateされるようになったね
2022/03/15(火) 15:45:27.48ID:DIDzUA9i
テスト対象の呼び出しまで完璧にサポートされてて便利すぎる
2022/03/16(水) 12:58:38.59ID:7fdw8GJ5
Go 1.18 is released!
https://go.dev/blog/go1.18
2022/03/17(木) 00:28:51.50ID:+BzvG1OL
ジェネリクス使ったmapやsliceのユーティリティが乱立するのかな
2022/03/17(木) 00:57:28.83ID:R5Hf13zE
やっっっとジェネリクス医薬品きたのかよ
どれどれどんな塩梅よ
2022/03/17(木) 01:41:25.22ID:bsoficKO
>>225
よっしゃ!
そしたら1.17入れる準備するか。
2022/03/17(木) 01:44:14.40ID:+BzvG1OL
やっとこういうのできるようになったか
https://github.com/samber/lo
2022/03/17(木) 03:24:50.03ID:OxdqHDsn
>>229
使いにくいインタフェースで筋が悪いな
あと多段適用するにしても途中で毎回配列生成は無駄すぎる
2022/03/17(木) 22:55:16.78ID:fLlxA/2d
GoCVのWindows版一生動作しなくて泣いてる
動作してる人がいたらmingwとgocvのバージョンの組み合わせとか教えてほしい
2022/03/19(土) 14:59:48.35ID:lmd9ivJq
>>231
解決した
gocv 0.28.0
mingwgcc 8.1.0
go 1.8
で動いた
2022/03/27(日) 19:47:35.42ID:4kGrQ90w
今更案件に採用したいとの連絡が来やがった。
もう他に決まっちゃったよ…
2022/03/27(日) 20:03:34.05ID:AzR4xInv
go案件一回だけ行けたことあるけど
バージョンが古くてきつかった記憶あるなぁ
下手にでかいシステムだとそういうのあるんだよな
2022/03/28(月) 00:04:31.98ID:9wMV4I/Y
もう go modules 無しで開発できる自信がない…
2022/04/01(金) 09:14:02.94ID:Z5kUzNXs
構造体のブランクフィールド
struct {
_ int
}
って、どこかのソースで使ってるのって見たことある?
2022/04/01(金) 10:24:23.29ID:Z5kUzNXs
1.18 で ~T って、T を実装している型という認識で正しいのかな?
2022/04/01(金) 15:58:41.67ID:Z5kUzNXs
1.18 の言語仕様読んでるけど
ジェネリックスいらんわホントに
HTMLコメントでは書き足りてないとか、ホントにホントに…
2022/04/01(金) 16:36:14.26ID:CvDUeZYP
>>238
どう言う意味でいらない?
2022/04/01(金) 17:16:02.47ID:Z5kUzNXs
>>239
ジェネリックス入れる上では仕方のない事なんだけど、
型関係の言語仕様が山になって追加されてた

spec の単純行数にして
1.17 - 2823 行
1.18 - 3265 行 (+442行)
2022/04/01(金) 17:22:16.71ID:Nf7Dhk5p
これからガンガンでかくなるはずなので、これに耐えられないなら早く逃げてくださいね
お疲れさまでした
2022/04/01(金) 17:23:53.64ID:Z5kUzNXs
>>239
ライブラリ開発者くらいじゃないのか?
欲しがってるのは正直、一部の開発者だよな
そのために仕様を10%単位でブクブク肥らすのは許容できるトレードなのか?
2022/04/01(金) 17:39:03.75ID:LyJwVbZX
>>242
通常のユーザーがジェネリック使うの強制なんだっけ?
ライブラリアン専用なら気にする必要無い気がするけど。
2022/04/01(金) 18:48:56.14ID:Z5kUzNXs
>>243
初学者が仕様書を読むとき、ハードルがかなり上がってしまう
何故かというと、至るところで型統一やらジェネリクスの用語の汚染が進んでいるから

もう、初心者には1.17の仕様書で勉強させるべきに思える
2022/04/01(金) 18:51:47.52ID:LyJwVbZX
>>244
初学者は仕様書読ませるのがそもそも間違い。
入門書読ませなさい。
2022/04/01(金) 18:55:28.61ID:LyJwVbZX
>>245
s/初学者は/初学者に/
typoすまんね。
2022/04/01(金) 19:00:06.78ID:Z5kUzNXs
あと珍妙に思えるような気もしなくもない文章が
The result of constraint type inference
is final substitution map M
from type parameters P
to type arguments A
where no type parameter P appears in any of A.

引数Aから型パラメータPがなくなるまで置換するマップMを制約型推論の最終結果とする、でいいのかなあ
2022/04/01(金) 19:06:19.64ID:Z5kUzNXs
>>245
あー、自分基準で初学者としてCのベテランレベルを想定していたわ
gccでインターネットサーバを書いてた層
半日でだいたい理解して三日でアプリを組み始めた
249デフォルトの名無しさん
垢版 |
2022/04/01(金) 20:49:31.03ID:5iHnQC+v
プログラム作る側からすると便利なライブラリが増えるからいいと思うわ
2022/04/01(金) 21:03:43.90ID:Nf7Dhk5p
map/reduce/filterみたいな操作をたくさんするとき、マジで面倒だったしジェネリクスあればいろんな場面で助かる
2022/04/01(金) 21:14:52.99ID:jxgGur0i
>>247
意訳すると型パラメータの方程式を解いた結果の制約集合が推論結果です、ということか
もったいぶった文章だな
Rob pikeのチェックは入ってるのか?
2022/04/01(金) 23:17:37.92ID:Z5kUzNXs
>>251
1.18の言語仕様の一部
その文は、Constraint type interface の中頃
2022/04/01(金) 23:32:09.14ID:Z5kUzNXs
とにかく読みづらい仕様書になっちまった!
と言いたい
2022/04/01(金) 23:56:13.72ID:auc7zK9Q
そうですね
もうGoを使うのはやめたほうがいいですよ^^
255デフォルトの名無しさん
垢版 |
2022/04/02(土) 00:13:08.30ID:YOvjIKEd
初心者は仕様書なんか見ない
2022/04/02(土) 01:04:35.98ID:m+vvtGqp
システムプログラミングしかしてないので
あんまりいらないけど
Web系とかはあったろうが便利なんじゃないだろうか

コレクションの中身が何の型かって基本的なことがわからないのはキツいよ
2022/04/02(土) 02:22:24.01ID:xHH5TZmF
Goでコレクションなんか使うか?
プロダクション運用してるけどsliceとmapしか使ったことないわ
2022/04/02(土) 05:33:45.87ID:tnnDyMVL
>>248
ベテランでも仕様書は読まないだろ。
普通はクイックツアー -> やりたいことのサンプルコードだと思うわ。
2022/04/02(土) 06:10:04.85ID:BAqmRjl3
>>258
普通は仕様書からチェックすると思うが
CでもC++でもJavaでもGoでも

あれ?C#の言語仕様書って見た覚えがない…
2022/04/02(土) 06:14:33.15ID:BAqmRjl3
>>259
ああ
C#はマイクロソフトのヘルプで見てったから文法書形式のは覚えがないのか
JavaScriptもMDNばかりで仕様書をよんだことないや
2022/04/02(土) 06:20:24.88ID:tnnDyMVL
>>259
ANSIとかISOとか持っているやつがそんなに居るかね。
2022/04/02(土) 06:27:00.86ID:BAqmRjl3
>>261
CとかC++やってりゃ赤とか緑とかARMとか持ってないか?
もっともインターネット以前だけど
2022/04/02(土) 12:45:39.96ID:BAqmRjl3
たまには仕様書も読みなおすと新鮮
いつの間にか妙ちきりんなルールが追加されてたりするし

_ &= flag というように、算術代入の左辺に空白識別子は置けません、とか誰得?
NOOPだとばかり思ってたけど変わったのか(わざわざ確認する気もない
2022/04/02(土) 13:41:36.50ID:m+vvtGqp
おじさん消えて
2022/04/02(土) 14:52:46.43ID:YPKLSNfQ
日本の製造業何十社から、トップが集まった、MISRA-C 研究会でも言ってた

日本には、C の仕様書に詳しい香具師はいない!
だから、仕様書で議論する事ができないので、

組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006
という本が書かれた

これが実際のコーディングルールのバイブル

抽象的な仕様書で、議論をしない事。
必ず、具体例・コードで議論する事

これが大原則

仕様書で議論するのは、現実的じゃない。
江添のC++ 本を見ても明らか

仕様書を表現した無数のコード例が書いてあるけど、細部は省略しますばっかり。
細部まで突き詰めていくと、切りがない

江添レベルの人間が、日本に2人もいないので、仕様書で議論することは無理
2022/04/02(土) 15:00:01.25ID:YPKLSNfQ
generics は、Rust にもあるから
2022/04/02(土) 16:04:50.21ID:4HZvLFXe
またジジイが暴れてんのか
2022/04/02(土) 16:31:43.87ID:BAqmRjl3
じゃ、どういう話題なら気に入るのかね若い人
2022/04/02(土) 16:33:42.78ID:vRBLByq+
>>266
そこは有る無いという話ではない
そこはRustの方が使いやすい
特にトレイト境界がありがたい
2022/04/02(土) 17:47:27.46ID:K3ABhaa3
最近マシにになったと思ったが我慢できないのかな?
Go Nimスレに閉じこもっててくれ
そこは好きに使っていいから
個別スレでは大人しくしといて
2022/04/02(土) 18:14:01.71ID:+a+ANJVh
>266 >269 >270
>96
餌与えんな。
2022/04/02(土) 18:30:53.19ID:FvAcb10F
MISRA出してくるのも相当おかしいけどな。
2022/04/03(日) 08:15:05.26ID:YAESyHF/
>>270
2022/04/04(月) 01:10:11.27ID:2YLoUSsE
1.18の言語仕様はどこで公開されてるの?
2022/04/04(月) 08:08:03.11ID:dKoFZlg8
>>274
https://go.dev/ref/spec
1.18 はもう安定版だから現在の言語仕様がそれ
2022/04/04(月) 08:11:46.50ID:GOjfDlOJ
>>274
ttps://go.dev/ref/spec
じゃないの?
2022/04/04(月) 08:24:54.17ID:dKoFZlg8
定数、変数、型やらの基本的な言語仕様で型パラメータやらコア型とかのジェネリクス関連の概念も持ち込んで記述する必要がある
けれどもライブラリ、それも今までinterface{}を引数に持ってたような関数を書いてたライブラリにしか関係ない概念を何故か皆が学ばないとならなくなった
単純に仕様書の行数から、学習コストは10%悪化したと見なせる

ジェネリクスは項として別枠に記述して、そこで定数やらでのジェネリクスの影響について書いてもらいたかった
2022/04/04(月) 08:27:50.29ID:dKoFZlg8
>>277
いや、無茶振りだとは分かってるただの愚痴

愚痴ばかりだから老がいとか言われてるんだよな
2022/04/04(月) 09:23:36.60ID:2YLoUSsE
>>275
なるほど、ココ読んでみるよ。
2022/04/04(月) 09:37:43.77ID:iJ6pcz9H
Goの長所はシンプルさ
その長所を劣化させてまで今さら導入すべきものではない
どうしても必要なものならば最初から仕様に含めるべきだった
2022/04/04(月) 16:06:42.84ID:yu8UGqfF
ロブパイクが実質リタイアしたから通ったんじゃないかな
2022/04/04(月) 21:28:48.99ID:dKoFZlg8
一応、大昔からジェネリクスは入れるとロードマップで予告はされてた
2022/04/06(水) 03:19:36.92ID:kWgOKN13
ジェネリクスなんていらん、ていってるやつのほとんどがロートルジジイばっかりでわらう
2022/04/06(水) 03:39:50.83ID:PLeFIjOG
いや、ジェネリクス導入が遅すぎたこととそれが中途半端であることを問題視する人々が多数派
そのために全体のシンプルさを失い更なる中途半端な状況を招いている
2022/04/06(水) 03:46:30.81ID:wPZ6Wy+h
コンパイラの実装を大幅に変えなくていいから
この仕様に落ち着いた感はあるよな
2022/04/06(水) 08:16:27.53ID:+qYubc5F
大体がJava5でジェネリクスが導入されてから、自分で書いた奴ってどれくらいいるの?
居るなら自分のプロジェクトリポジトリ晒してみ?


とか書いてから
ArrayListに散々お世話になっていながら、その言いぐさはないよなーと反省
287デフォルトの名無しさん
垢版 |
2022/04/09(土) 15:23:53.03ID:dkIcbWyn
golang.org/x/text/encoding/japanese でshiftjisをデコードすると
不正バイトはU+FFFDに変換されるんだけど
エラーを返してほしいときはどうすればいいの
2022/04/09(土) 15:41:49.71ID:s1DYUnBK
ちんちんシュッ!シュッ!シュッ!
2022/04/09(土) 17:58:03.72ID:P2GNRI+e
コードを見ても変換失敗時にエラーを返すロジックないし
ルーン '\ufffd' の変換結果をdstから探したら?
[..., 239, 191, 189, ...] という並びがあればエラーだと思うけど
https://go.dev/play/p/8ALF1MMIQPz
2022/04/09(土) 18:00:08.15ID:P2GNRI+e
https://go.dev/play/p/8ALFIMMIQPz か?
2022/04/09(土) 18:01:35.73ID:P2GNRI+e
https://go.dev/play/p/8ALFlMMIQPz
2022/04/09(土) 18:06:47.65ID:P2GNRI+e
だめだplaygroundのURLがどこで間違ってるのかわからん
2022/04/09(土) 18:09:17.78ID:9GFACAI5
playground側の問題かもしれんね
別のサービスでコード共有したら?
294デフォルトの名無しさん
垢版 |
2022/04/09(土) 18:18:21.65ID:dkIcbWyn
https://github.com/golang/go/issues/18898
もともとエラーを返すようにしてたのをFFFDに置換するようにしたのね

> ルーン '\ufffd' の変換結果をdstから探したら?
それしかないかー
2022/04/09(土) 18:38:01.40ID:P2GNRI+e
>>293
5chはタブレットで見てて、コードを書くのはPC
手打ちで書き写してるせい
lとかIとか使う邪悪なシステムが悪い

fffdをバイトにデコードしてるだけだから上の配列値があればいいかな
2022/04/09(土) 20:29:16.25ID:ALVqghU/
>>285
ジェネリクスなんて糞みたいなもののためだけにビルド速度落としたらgo使う意味がそもそもない。
2022/04/11(月) 18:36:29.35ID:E/+8nzoc
golangの機能追加によるビルド速度低下なんて他の言語のコンパイルの遅さに比べれば毛の生えたようなものでしょ・・・
ビルド速度とは関係ないが、1.18から関数の呼び出しがスタック参照ではなくレジスタ引数で呼べるようになったので
実行速度が5%-15%改善してる。
2022/04/12(火) 08:34:50.45ID:rpFygdst
否定的意見じゃないんだけど
レジスタ渡しって%単位で効くもんなのかな?
実処理の5-15%がスタック渡しに費やされていたって話だよね
2022/04/12(火) 15:46:20.46ID:3xd8M5tv
速度的にはキャッシュに乗る乗らないとか色々ありそうだから
定量的に測るのは難しそうだが
そもそもマシンコードの関数呼び出しがレジスタ経由でしょ
なので普通になっただけかと
2022/04/13(水) 23:15:55.56ID:6kED4GhE
そんなわけない、レジスタに乗らないデータは普通にスタックポインタレジスタでスタックに格納される。golangが
スタックだったのは実装が簡単になるからという理由が最も大きかった
2022/04/14(木) 02:13:38.39ID:YSgRDOi4
関数の引数をレジスタ渡ししても
その関数内で別の関数を呼ぶときにスタックへ退避しなければならない
だからC言語でも引数はスタックに積んで渡す
2022/04/14(木) 02:38:48.48ID:dvnOt0Zc
たしか処理系がどのABIを採用しているのかによるんだと思うし、そんな十把一絡げにC言語やらの話を一般化されて話されてもツッコミどころが多い
__fastcall宣言とか使うとまたさらに挙動かわるし
2022/04/14(木) 17:51:07.32ID:mUuUh3T2
少なくともLinuxのCでは第6引数まではレジスタで渡すよ
6個以上の引数なんてクソコード以外では存在しないから
実質レジスタ経由だよ
windowsは知らん
2022/04/14(木) 20:18:22.21ID:biX3AFA3
x86はレジスタが少ないからスタックだった
2022/04/15(金) 18:58:00.93ID:Or3DM27q
cみたいに他からも呼ばれるような言語の場合はスタック積みじゃないかね。
ABIの互換性の便利さと比較して、キャッシュ考慮したらそこまで性能出るとは思えんし。
2022/04/16(土) 23:24:07.47ID:3G5k9Hnh
開発者が実装が簡単だったからと言ってるのでレジスタ数とか、GCCの第六天の魔王とか関係ないよ
2022/04/16(土) 23:24:23.08ID:3G5k9Hnh
開発者が実装が簡単だったからと言ってるのでレジスタ数とか、GCCの第六天の魔王とか関係ないよ
2022/04/30(土) 04:35:01.90ID:JVPX2fHb
ほしゆ(・ω・)
2022/05/04(水) 00:52:17.30ID:J0ifRt83
良スレ緊急浮上age
2022/05/05(木) 13:14:14.01ID:NIrZVW5R
もう30代くらいの若いお父さんだと菖蒲湯知らないんだな
子供より先に「ネギが入ってる!」ってリアクションするもんだから笑い堪えるのに必死だったわ
2022/05/06(金) 10:59:50.63ID:Vl/2oQCy
漏れら極悪非道のageブラザーズ!
今日もネタもないのにageてやるからな!
 ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧   ∧_∧    age
 (・∀・∩)(∩・∀・)    age
 (つ  丿 (   ⊂) age
  ( ヽノ   ヽ/  )   age
  し(_)   (_)J
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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