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/
探検
Go language part 5
■ このスレッドは過去ログ倉庫に格納されています
2022/02/27(日) 07:43:20.04ID:uWHjNeVw
412デフォルトの名無しさん
2022/06/15(水) 23:39:49.40ID:icfWO5Ii >>405
それは君の理解が間違っている
> Rustの無限長イテレーターはRangeやstd::iter::repeatにおいて無限長を扱えるだけであり、
その部分が完全にウソ
Rustのイテレータは誰もが自由に任意の無限長イテレータを作成可能
そしてその無限長イテレータに対して任意の別のイテレータを好きなだけチェーンさせて動作可能
これはRustのイテレータが中間生成物(リストや配列やベクタ)を作成しないため可能となっている
Goで整備するときもここが重要なポイントとなってくる
それは君の理解が間違っている
> Rustの無限長イテレーターはRangeやstd::iter::repeatにおいて無限長を扱えるだけであり、
その部分が完全にウソ
Rustのイテレータは誰もが自由に任意の無限長イテレータを作成可能
そしてその無限長イテレータに対して任意の別のイテレータを好きなだけチェーンさせて動作可能
これはRustのイテレータが中間生成物(リストや配列やベクタ)を作成しないため可能となっている
Goで整備するときもここが重要なポイントとなってくる
413デフォルトの名無しさん
2022/06/16(木) 00:21:02.73ID:wccj32jk 無限リストって実際に無限長の何かを使うことは滅多になくて、あくまで遅延リストとして適切に実装されているかどうかの判定基準なんだよね
無限長リストを扱える構造になっていることは、メモリに乗らない巨大なファイルを一行ずつ読むような、文字通りストリーミング処理が必要な状況で非常に有用なんだよ
無限長リストを扱える構造になっていることは、メモリに乗らない巨大なファイルを一行ずつ読むような、文字通りストリーミング処理が必要な状況で非常に有用なんだよ
414デフォルトの名無しさん
2022/06/16(木) 01:51:06.21ID:lg2Mpz7e 結局2種類のうちどちらを選ぶか、だけの問題
(A) 遅延処理
・メソッドチェーン時の中間生成配列などを無くせる
・無限長も扱える
・無駄がなく有利
(B) 即時処理
・メソッドチェーン時の中間生成配列などが必ず必要となる
・無限長を扱えない
・(A)よりも不利
RubyのlazyやRustのイテレータはもちろん(A)タイプ
Goでも欲しいのは(A)
(B)タイプのものは検討する必要がない
(A) 遅延処理
・メソッドチェーン時の中間生成配列などを無くせる
・無限長も扱える
・無駄がなく有利
(B) 即時処理
・メソッドチェーン時の中間生成配列などが必ず必要となる
・無限長を扱えない
・(A)よりも不利
RubyのlazyやRustのイテレータはもちろん(A)タイプ
Goでも欲しいのは(A)
(B)タイプのものは検討する必要がない
415デフォルトの名無しさん
2022/06/16(木) 02:11:04.77ID:TlphqPPg Go 2のProposalを見ると
https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md
> We do not expect approaches like the C++ STL iterator types to become widely used. In Go that sort of idea is more naturally expressed using an interface type. In C++ terms, using an interface type for an iterator can be seen as carrying an abstraction penalty, in that run-time efficiency will be less than C++ approaches that in effect inline all code; we believe that Go programmers will continue to find that sort of penalty to be acceptable.
って書いてあるけどまあGoはそういう言語で、そこまで最適化にこだわる言語じゃない
最適化にこだわるひとはRustとかC++とか使うべき
https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md
> We do not expect approaches like the C++ STL iterator types to become widely used. In Go that sort of idea is more naturally expressed using an interface type. In C++ terms, using an interface type for an iterator can be seen as carrying an abstraction penalty, in that run-time efficiency will be less than C++ approaches that in effect inline all code; we believe that Go programmers will continue to find that sort of penalty to be acceptable.
って書いてあるけどまあGoはそういう言語で、そこまで最適化にこだわる言語じゃない
最適化にこだわるひとはRustとかC++とか使うべき
416デフォルトの名無しさん
2022/06/16(木) 08:44:05.77ID:wccj32jk >>415
これは遅延リストを否定しているのではない
C++のようなゼロオーバーヘッドは目指さないよ、もしイテレータを抽象化するなら実行時のオーバーヘッドを受け入れて普通にInterface使う想定だよと言っていて、
将来的に>>414の(A)のスタイルのイテレータを導入する可能性は下記の通り肯定している
> As we get more container types, we may develop a standard Iterator interface. That may in turn lead to pressure to modify the language to add some mechanism for using an Iterator with the range clause. That is very speculative, though.
これは遅延リストを否定しているのではない
C++のようなゼロオーバーヘッドは目指さないよ、もしイテレータを抽象化するなら実行時のオーバーヘッドを受け入れて普通にInterface使う想定だよと言っていて、
将来的に>>414の(A)のスタイルのイテレータを導入する可能性は下記の通り肯定している
> As we get more container types, we may develop a standard Iterator interface. That may in turn lead to pressure to modify the language to add some mechanism for using an Iterator with the range clause. That is very speculative, though.
417デフォルトの名無しさん
2022/06/16(木) 10:46:03.49ID:8bJC6Uow >>411
JavaとPHpだけじゃ不安なんだ
JavaとPHpだけじゃ不安なんだ
418デフォルトの名無しさん
2022/06/16(木) 11:54:55.58ID:4wdIdA1r >>417
PHPてw
PHPてw
419デフォルトの名無しさん
2022/06/16(木) 17:42:32.41ID:T9ZCQ85W420デフォルトの名無しさん
2022/06/16(木) 19:30:57.98ID:33b0nQQ5421デフォルトの名無しさん
2022/06/16(木) 21:18:25.47ID:fyAXkPds422デフォルトの名無しさん
2022/06/17(金) 03:52:06.95ID:pTlTSB96423デフォルトの名無しさん
2022/06/17(金) 11:18:37.95ID:/u2pEQ+2 >>422
標準無視のコードで俺スゲーしたい系の人はRustに行っちゃうからだろうね
標準無視のコードで俺スゲーしたい系の人はRustに行っちゃうからだろうね
424デフォルトの名無しさん
2022/06/17(金) 11:32:30.80ID:G5rhOs4/ イテレータを使うようにしたら、こんなふうになるのかな?
https://github.com/Soft/iter
いちいち関数呼び出しすることになるから普段使いにしようとするとパフォーマンス悪くなりそう
https://github.com/Soft/iter
いちいち関数呼び出しすることになるから普段使いにしようとするとパフォーマンス悪くなりそう
425デフォルトの名無しさん
2022/06/17(金) 11:45:45.87ID:G5rhOs4/ もっと最適化されるようになったら良いけどね
426デフォルトの名無しさん
2022/06/17(金) 12:50:08.27ID:tKb8DSRU RustのイテレータがCのfor文と同じ速度が出るのも最適化された設計と実装によるものだもんね
あとはGo開発陣のやる気次第
あとはGo開発陣のやる気次第
427デフォルトの名無しさん
2022/06/17(金) 12:53:28.19ID:/u2pEQ+2 >>424
これはダメだね
パフォーマンス以前に、イテレータを閉じる方法がないからファイルをストリーミング処理するようなユースケースに対応できない
ちゃんと言語機能の背景を考慮せずにRustを猿真似しちゃった失敗作だね
これはダメだね
パフォーマンス以前に、イテレータを閉じる方法がないからファイルをストリーミング処理するようなユースケースに対応できない
ちゃんと言語機能の背景を考慮せずにRustを猿真似しちゃった失敗作だね
428デフォルトの名無しさん
2022/06/17(金) 13:28:49.58ID:G5rhOs4/ 何をどう見ても許されてないしロシアが核持ってなかったら、
集団的自衛権をもとに連合軍が作られてプーチン政権が倒されるか、ロシアも同盟を集めて世界大戦に発展してるよ
集団的自衛権をもとに連合軍が作られてプーチン政権が倒されるか、ロシアも同盟を集めて世界大戦に発展してるよ
429デフォルトの名無しさん
2022/06/17(金) 13:29:03.78ID:G5rhOs4/ なんかスレ間違えたわ
430デフォルトの名無しさん
2022/06/17(金) 15:44:02.84ID:NvTbuTZi いやだいじょうぶだ、つづけろ
431デフォルトの名無しさん
2022/06/17(金) 19:22:44.65ID:JVB9uh57 >>409
その通り。Goで中間コンテナを作らないようなGeneric版高階関数ライブラリを作ろうと思うと、yieldのような中断じゃなく確かにチャネルの受け渡しになる。
それでfilter->map->collectのようなRust的な中間コンテナを作らないようなコードを書くことになると、中間の加工データの受け渡しはチャネルになるので、Rustで
そのままでは安易に並列化できずにrayonライブラリなどを使うより、遥かに簡単にスケールできる並列化まで踏み込む可能性がある。
これをGoogleはパイプライン処理と呼んでいるが、421の言うように1.18はイテレータの標準化とコレクションの操作の一般化を変更に含めなかっただけ
やる気というか現代のソフトウェア開発は、世に出たら0から255まで揃ってる訳ではなく、小まめな段階リリースだから
その通り。Goで中間コンテナを作らないようなGeneric版高階関数ライブラリを作ろうと思うと、yieldのような中断じゃなく確かにチャネルの受け渡しになる。
それでfilter->map->collectのようなRust的な中間コンテナを作らないようなコードを書くことになると、中間の加工データの受け渡しはチャネルになるので、Rustで
そのままでは安易に並列化できずにrayonライブラリなどを使うより、遥かに簡単にスケールできる並列化まで踏み込む可能性がある。
これをGoogleはパイプライン処理と呼んでいるが、421の言うように1.18はイテレータの標準化とコレクションの操作の一般化を変更に含めなかっただけ
やる気というか現代のソフトウェア開発は、世に出たら0から255まで揃ってる訳ではなく、小まめな段階リリースだから
432デフォルトの名無しさん
2022/06/18(土) 15:13:54.54ID:ixLj3AWV おじさんがくるとこうなるのね
本当にこの世から消えて欲しい
本当にこの世から消えて欲しい
433デフォルトの名無しさん
2022/06/22(水) 23:33:10.33ID:DzsA87OB この世から消えて欲しいチュウニおじさん
434デフォルトの名無しさん
2022/06/26(日) 19:36:20.90ID:n40xbeTi モックって何使ってる?
gomock, testfy, mockery
オススメは?
gomock, testfy, mockery
オススメは?
435デフォルトの名無しさん
2022/06/26(日) 19:37:58.18ID:vl5UtIOz いらない
インターフェース埋め込みで十分
インターフェース埋め込みで十分
436デフォルトの名無しさん
2022/06/26(日) 21:04:51.85ID:PhXCrOZE >>435に一票
Goでモックフレームワークが欲しくなるようなら設計と開発スタイルがおかしい
Goでモックフレームワークが欲しくなるようなら設計と開発スタイルがおかしい
437デフォルトの名無しさん
2022/06/26(日) 21:48:32.78ID:n40xbeTi カバレッジ100%目指さないの?
共通ライブラリのエラーのパスとか
共通ライブラリのエラーのパスとか
438デフォルトの名無しさん
2022/06/26(日) 23:06:38.35ID:yMoKMg46 別におすすめじゃないけどgomock使ってる
gomockはinterface{}だらけで静的型チェックが効かないからたまにイラッとする
gomockはinterface{}だらけで静的型チェックが効かないからたまにイラッとする
439デフォルトの名無しさん
2022/06/26(日) 23:08:45.74ID:yMoKMg46 間違えた
gomockじゃなくてtestifyだ
gomockじゃなくてtestifyだ
440デフォルトの名無しさん
2022/06/27(月) 08:35:06.00ID:YooYWD1s がーん、週明けで確認したらGCPでホストしているサービス二個ともが、のきなみサーバーエラー500で動いてない
Memorystore の障害なのか?これは
Memorystore の障害なのか?これは
441デフォルトの名無しさん
2022/06/27(月) 08:37:17.96ID:YooYWD1s Firestoreのクエリ結果をキャッシュしてるから確かに使ってる
442デフォルトの名無しさん
2022/06/27(月) 08:40:10.32ID:YooYWD1s あ、よく考えたらGoスレではスレ違いな話題だったスマン
ホストしてるのはGoだけど
ホストしてるのはGoだけど
443デフォルトの名無しさん
2022/07/02(土) 23:20:51.48ID:IZ1AfdFM 質問
xxxx_test.go は go test だけで、go build からは無視されるとかって本当?
だとすると package xxxx_test とかパッケージを分けるのって意味がない?
xxxx_test.go は go test だけで、go build からは無視されるとかって本当?
だとすると package xxxx_test とかパッケージを分けるのって意味がない?
444デフォルトの名無しさん
2022/07/02(土) 23:36:14.32ID:IZ1AfdFM あー、テストで xxxx をインポートしてる別パッケージをインポートしたいときに、xxxx からじゃ循環参照としてコンパイルできないから意味はあるのか
445デフォルトの名無しさん
2022/07/02(土) 23:50:10.91ID:WXVFk7BC ごくまれに package xxxx_test を作ったほうが簡単に解決できることもあるね
446デフォルトの名無しさん
2022/07/03(日) 08:48:25.27ID:7pvv3VrN *bufio.Scanner とか *os.File といった、interface じゃなく struct な戻り値を返す標準関数で、scanner.Scan() とかの戻り値による分岐をカバレッジしたい
標準関数は関数ポインタによるフックに変更して、モックで差し替えられるようにしたんだけど、関数ポインタのシグネチャが struct を返す形なんで、上記の scanner.Scan() とかを差し替えられない
そこで bufio.NewScanner() を直接に使うのではなく、scanner を interface で返すラッパー関数を作って、そのラッパー関数ポインタをモックで置き換えさせることを考えたりしてるんだけど
…やり過ぎ?(そもそもこの説明で分かるかな?)
標準関数は関数ポインタによるフックに変更して、モックで差し替えられるようにしたんだけど、関数ポインタのシグネチャが struct を返す形なんで、上記の scanner.Scan() とかを差し替えられない
そこで bufio.NewScanner() を直接に使うのではなく、scanner を interface で返すラッパー関数を作って、そのラッパー関数ポインタをモックで置き換えさせることを考えたりしてるんだけど
…やり過ぎ?(そもそもこの説明で分かるかな?)
447デフォルトの名無しさん
2022/07/03(日) 08:55:03.83ID:7pvv3VrN そもそも例外なケースのカバレッジのために、そんなクソ複雑なメカニズムを入れるのは、保守性を下げてしまうから本末転倒だろうか?
448デフォルトの名無しさん
2022/07/03(日) 11:51:42.83ID:l1HGgLKC Go的には、差し替えが必要なんだったらScannerを直接使わずに最小限のアドホックなinterfaceを定義し、
それを関数の引数に受け取るかstructのメンバに持たせるのが筋
それを関数の引数に受け取るかstructのメンバに持たせるのが筋
449デフォルトの名無しさん
2022/07/03(日) 13:48:43.92ID:7pvv3VrN450デフォルトの名無しさん
2022/07/03(日) 13:59:46.67ID:7pvv3VrN >>449
これだけ複雑なのに、os.Open() と s.Err() がエラーを返すパスを通せるだけというのは、
コードの保守性悪化に見合うメリットたりえるのか
そう感じてしまって悩んでる
これが Java ならクラスローダーでプロキシインスタンスに差し替えるという手段で対象コードには手を触れなくて済むから…
これだけ複雑なのに、os.Open() と s.Err() がエラーを返すパスを通せるだけというのは、
コードの保守性悪化に見合うメリットたりえるのか
そう感じてしまって悩んでる
これが Java ならクラスローダーでプロキシインスタンスに差し替えるという手段で対象コードには手を触れなくて済むから…
451デフォルトの名無しさん
2022/07/03(日) 15:10:23.33ID:Z8jWnyOJ >>450
そのへんはGo云々というより設計センスの問題だな
textLinesがhookを持つのではなく、LoadFromの引数にfilenameの代わりにiScannerを渡して、その実装を提供するのは呼び出す側の責任にした方が良いと思う
filenameを受け取る便利関数を提供したいなら、それとは別にLoadFromFileNameみたいな関数作ってFileやScannerをインスタンス化してLoadFromに投げればいい
そうすればインスタンス化の部分とそれを使う部分とでテストケースを分離できるでしょ
そのへんはGo云々というより設計センスの問題だな
textLinesがhookを持つのではなく、LoadFromの引数にfilenameの代わりにiScannerを渡して、その実装を提供するのは呼び出す側の責任にした方が良いと思う
filenameを受け取る便利関数を提供したいなら、それとは別にLoadFromFileNameみたいな関数作ってFileやScannerをインスタンス化してLoadFromに投げればいい
そうすればインスタンス化の部分とそれを使う部分とでテストケースを分離できるでしょ
452デフォルトの名無しさん
2022/07/03(日) 23:23:15.49ID:kM3791I8 そうだな、設計の話だなあ
コードがそこそこの規模になるんだったらとりあえずDI的なことをやったほうがいいよ
コードがそこそこの規模になるんだったらとりあえずDI的なことをやったほうがいいよ
453デフォルトの名無しさん
2022/07/10(日) 17:20:12.05ID:EjhmXdOb 普通に自前でScanner作れよ
大して難しい話じゃないだろ
大して難しい話じゃないだろ
454デフォルトの名無しさん
2022/07/11(月) 19:28:21.15ID:QgABBT19 構造体のコンストラクタのコードを見ると必ず構造体のポインタを返していますが、ポインタにするメリットと値を返したときのデメリットを教えて頂きたいです
455デフォルトの名無しさん
2022/07/11(月) 20:06:52.63ID:BS7kt+k9 >>454
受け渡しの際に毎回コピーするのではなく同一のインスタンスを引き回すことを想定している場合、
それを利用者に主張するために値ではなくポインタを返すことが多い
ポインタで受け取ったものをわざわざデリファレンスしてコピーなんて普通あまりしないからね
構造体をオブジェクト指向言語におけるミュータブルなクラスのように使っていると、コピーされると意図せぬ挙動になりやすい
受け渡しの際に毎回コピーするのではなく同一のインスタンスを引き回すことを想定している場合、
それを利用者に主張するために値ではなくポインタを返すことが多い
ポインタで受け取ったものをわざわざデリファレンスしてコピーなんて普通あまりしないからね
構造体をオブジェクト指向言語におけるミュータブルなクラスのように使っていると、コピーされると意図せぬ挙動になりやすい
456デフォルトの名無しさん
2022/07/12(火) 09:01:35.03ID:r0oulnz0457デフォルトの名無しさん
2022/07/12(火) 09:02:55.76ID:r0oulnz0 >>453
だから、ScannerではなくNewScanner関数をどう差し替えるかという話
だから、ScannerではなくNewScanner関数をどう差し替えるかという話
458デフォルトの名無しさん
2022/07/12(火) 09:14:17.91ID:bpFuPlMn459デフォルトの名無しさん
2022/07/15(金) 23:35:22.96ID:1DD1sO9i コンパイルするファイル内に設定値も全部入れたいんだけど、
その場合は設定値だけのファイルを読み込むことって可能ですか?
関数にしてmapで返す感じしかないですか?
その場合は設定値だけのファイルを読み込むことって可能ですか?
関数にしてmapで返す感じしかないですか?
460デフォルトの名無しさん
2022/07/16(土) 13:38:45.14ID:Gzq+vhF3 jsonファイルをgo-assetsとかgo:embedで組み込んで、それをjson.Unmarshal()で構造化データとして使えばいいと思うよ
461デフォルトの名無しさん
2022/07/16(土) 14:06:11.73ID:F7RlRzGb 個人的には設定はビルド時に埋め込むならソース内にjson風にハードコードする派
設定ファイル嫌い
設定ファイル嫌い
462デフォルトの名無しさん
2022/07/17(日) 05:50:18.02ID:p7xubc+G てめーの好き嫌いなんか知ったことじゃない
463デフォルトの名無しさん
2022/07/17(日) 08:32:38.03ID:Em8OpVY9 組み込みjsonをデフォルトとして、カスタム設定ファイルは外部のjsonにする
デフォルトから取り込んでカスタムで上書き
これでjsonからの取り込み部分を一本化できるのでバグを防止できる
ハードコードしてると取り込み部分が共有できない (json文字列を返す関数でもいいんだけど
デフォルトから取り込んでカスタムで上書き
これでjsonからの取り込み部分を一本化できるのでバグを防止できる
ハードコードしてると取り込み部分が共有できない (json文字列を返す関数でもいいんだけど
464デフォルトの名無しさん
2022/07/17(日) 09:17:16.84ID:mx7kwKTp >>463
組み込み設定は構造体をハードコードし、カスタム設定ファイルはそれをjson等で上書きすればいいだけ
どうせ上書きされるのは極一部の項目だけなんだから、大部分はコンパイル時のチェックによりバグを防止できる
組み込み設定は構造体をハードコードし、カスタム設定ファイルはそれをjson等で上書きすればいいだけ
どうせ上書きされるのは極一部の項目だけなんだから、大部分はコンパイル時のチェックによりバグを防止できる
465デフォルトの名無しさん
2022/07/17(日) 19:27:05.51ID:Em8OpVY9 >>464
と、思っちゃうよな
構造体定義して、初期化で初期値書き込んで、それとは別にカスタム設定取り込みコードを書く
対して、構造体定義して、設定取り込みコードを書く
すると設定取り込みには普通にバリデートも書くから初期化での値バグが起きない
と、思っちゃうよな
構造体定義して、初期化で初期値書き込んで、それとは別にカスタム設定取り込みコードを書く
対して、構造体定義して、設定取り込みコードを書く
すると設定取り込みには普通にバリデートも書くから初期化での値バグが起きない
466デフォルトの名無しさん
2022/07/17(日) 19:36:44.11ID:Em8OpVY9 >>464
まあ、好きずきの話に近いことは近い
ハードコードした設定値をバリデーターにかけてチェックさせる作りなら解決できなくもない
でも取り込みの各段階でバリデーションしていったほうがミスりにくいと俺は思うから
まあ、好きずきの話に近いことは近い
ハードコードした設定値をバリデーターにかけてチェックさせる作りなら解決できなくもない
でも取り込みの各段階でバリデーションしていったほうがミスりにくいと俺は思うから
467デフォルトの名無しさん
2022/07/17(日) 19:43:13.12ID:EABPDou+ そんなにバグが怖いならそもそもそんな柔軟な設定ファイル要る?というところを見直すべきでは
汎用的なOSSでも作ってるんでない限り、設定なんぞ環境変数で十分
あとは全部ハードコードすればバリデーションなんか要らん
汎用的なOSSでも作ってるんでない限り、設定なんぞ環境変数で十分
あとは全部ハードコードすればバリデーションなんか要らん
468デフォルトの名無しさん
2022/07/18(月) 09:02:04.30ID:unHGOtJd バグが怖いというより、適切なアナウンスかな
設定のどこが、どう不味いのか
設定のどこが、どう不味いのか
469デフォルトの名無しさん
2022/07/18(月) 16:09:24.37ID:k+MW10XJ Viperを使え
470デフォルトの名無しさん
2022/07/21(木) 22:26:13.75ID:CXPkj94/ フレームワークのginでWebアプリ作りたいなと思ってるんですけど、ginの勉強にいい教材ありますか?
Pythonでツール作ったことあるくらいで、Goの基礎は一通りやったくらいのスキルです。
日本語ドキュメント見てもいまいちピンときてません
https://gin-gonic.com/ja/
Pythonでツール作ったことあるくらいで、Goの基礎は一通りやったくらいのスキルです。
日本語ドキュメント見てもいまいちピンときてません
https://gin-gonic.com/ja/
471デフォルトの名無しさん
2022/07/21(木) 22:30:02.68ID:2u+uMLjG gin自体が良くないからいい教材なんか無い
Goはnet/httpパッケージを使うんだよ
Goはnet/httpパッケージを使うんだよ
472デフォルトの名無しさん
2022/07/21(木) 23:21:18.30ID:CXPkj94/ そうだったのか。。
473デフォルトの名無しさん
2022/07/22(金) 02:56:37.89ID:J1VsK1aI いやGinでいいだろ
今どきnet/httpだけでWebアプリ作ってるとこなんてねーよ
Gin+Vueとかで作ってみな
5chにいる玄人()のおっさんに惑わされんな
今どきnet/httpだけでWebアプリ作ってるとこなんてねーよ
Gin+Vueとかで作ってみな
5chにいる玄人()のおっさんに惑わされんな
474デフォルトの名無しさん
2022/07/22(金) 03:45:47.87ID:GTjCaUbk 俺はchiがおすすめ
475デフォルトの名無しさん
2022/07/22(金) 12:01:47.88ID:wu+YttEu 最近いじってないけど
Echoは少数派なの?
Echoは少数派なの?
476デフォルトの名無しさん
2022/07/22(金) 13:57:48.11ID:sWmP1lOI >>473
さんきゅー!
さんきゅー!
477デフォルトの名無しさん
2022/07/22(金) 14:20:09.64ID:whw2xWQR gin、chi、echoどれも薄っぺらいんだから対して変わらない
どれでもええわ
どれでもええわ
478デフォルトの名無しさん
2022/07/23(土) 09:09:18.33ID:e1dxODSm echo はcontext の扱いが良くない
479デフォルトの名無しさん
2022/07/29(金) 12:06:04.77ID:Nm1LHugv Fiberこそ至高
480デフォルトの名無しさん
2022/07/29(金) 12:08:16.31ID:CmFCr4CU 月額報酬が最も高い開発言語ランキング 3位は「Python」、2位は「Go」、1位は? フリーエンジニア向け仕事仲介サービス調べ
481デフォルトの名無しさん
2022/07/30(土) 02:29:49.54ID:Wzbfhtrr URLを貼らないあたり仕事できなさそう
482デフォルトの名無しさん
2022/07/30(土) 05:26:38.23ID:fJ4AJJUc Goは単価高いけどGoだけ出来ればいいってわけじゃないからなぁ
ECSとかTerraformみたいなクラウド技術も使えて当然だよね?って雰囲気が全体的にある
ECSとかTerraformみたいなクラウド技術も使えて当然だよね?って雰囲気が全体的にある
483デフォルトの名無しさん
2022/07/30(土) 17:20:05.92ID:wZaxY20D Goのmapをfor分で回すと順序が不定というのはなんでそうなったの?
484デフォルトの名無しさん
2022/07/30(土) 17:42:37.40ID:54mLdGPJ >>483
将来的な最適化の余地を確保するため。
大抵の言語では、標準のハッシュ表はその内容が変更されない限りは順序が変わらないような実装がなされていることが多い。
しかし、プログラマにそれを期待したコードを書かれてしまうと、内容が変わらなくても順序が変わりうるような実装に将来的に変更したときに既存のコードが破壊される可能性がある。
Goはそれを避けるために順番を意図的にシャッフルしている。
例えば、将来的にはGCがmapのメモリレイアウトを自動的に最適化するかもしれない。仮にそうなればプログラマが内容を変更したつもりがなくても順番が変わるだろう。
将来的な最適化の余地を確保するため。
大抵の言語では、標準のハッシュ表はその内容が変更されない限りは順序が変わらないような実装がなされていることが多い。
しかし、プログラマにそれを期待したコードを書かれてしまうと、内容が変わらなくても順序が変わりうるような実装に将来的に変更したときに既存のコードが破壊される可能性がある。
Goはそれを避けるために順番を意図的にシャッフルしている。
例えば、将来的にはGCがmapのメモリレイアウトを自動的に最適化するかもしれない。仮にそうなればプログラマが内容を変更したつもりがなくても順番が変わるだろう。
485デフォルトの名無しさん
2022/07/30(土) 18:14:58.42ID:wZaxY20D486デフォルトの名無しさん
2022/07/30(土) 23:59:57.16ID:H9aJG6PT Rubyとかは逆に不定じゃなくしたよね。いつだったかのタイミングで。
あれは変な判断だと思ったなぁ。
あれは変な判断だと思ったなぁ。
487デフォルトの名無しさん
2022/07/31(日) 00:35:32.67ID:FStFDS54 Rubyの連想配列(Hash)にはshiftっていう変テコなメソッドがあるせいかなあ
488デフォルトの名無しさん
2022/07/31(日) 00:47:08.11ID:tsdyYOt0 RubyやPythonの用途なら挿入順でイテレートできるようにするためにかかるコストよりも
利便性が優先されるからじゃないかな
利便性が優先されるからじゃないかな
489デフォルトの名無しさん
2022/07/31(日) 02:02:03.13ID:fu2FWHQK ですな。
490デフォルトの名無しさん
2022/08/03(水) 10:05:50.52ID:pR7q6wnw491デフォルトの名無しさん
2022/08/03(水) 12:30:49.23ID:HH6IlM8W Pythonはordered dictがいつの間にか標準dictになってたな
便利だからいいけど
便利だからいいけど
492デフォルトの名無しさん
2022/08/09(火) 14:19:29.00ID:/hRQdNQg 最近の言語仕様書はDeepLすら受け付けない英文なのはどうにかしてくれんかな
ほかにもインターフェース関係の解説でいつの間にか話に出てきてないFileインターフェースが混じってきたり
絶対にレビューしてないよな
なお1.17を読んでる(1.18 からはジェネリクスで更に混迷が進んでる)
ほかにもインターフェース関係の解説でいつの間にか話に出てきてないFileインターフェースが混じってきたり
絶対にレビューしてないよな
なお1.17を読んでる(1.18 からはジェネリクスで更に混迷が進んでる)
493デフォルトの名無しさん
2022/08/18(木) 10:59:30.64ID:uJ4JpjWj ふと
channel はチャンネルと読んでる?チャネルと読んでる?
channel はチャンネルと読んでる?チャネルと読んでる?
494デフォルトの名無しさん
2022/08/18(木) 12:00:31.81ID:I3eJj73g チャネル
495デフォルトの名無しさん
2022/08/18(木) 12:23:20.11ID:cEC5FUVy 正確な発音はチャノォ
496デフォルトの名無しさん
2022/08/18(木) 13:07:53.85ID:nV24tQaO んゅにぇぅな?
497デフォルトの名無しさん
2022/08/18(木) 14:36:09.80ID:wr3YJ4Iv 茶野ぉ?
498デフォルトの名無しさん
2022/08/18(木) 16:47:44.68ID:sstdM9KK チャノルなぞ使わん!
男は黙って共有&mutex
男は黙って共有&mutex
499デフォルトの名無しさん
2022/08/20(土) 04:18:43.73ID:O8Vd08Ya >>473
ginのルーティングが糞なのは直ってるの?
ginのルーティングが糞なのは直ってるの?
500デフォルトの名無しさん
2022/08/20(土) 08:17:30.29ID:9Gwmc6Wf 実際goをつかいはじめのころはチャンネルの仕様とか使いかたとか調べるのが面倒で
勝手しったるmutexばっかりつかっていた
勝手しったるmutexばっかりつかっていた
501デフォルトの名無しさん
2022/08/20(土) 08:27:18.78ID:jhGGjByr よーわからんし、echoで問題ないから使ってる
502デフォルトの名無しさん
2022/08/20(土) 11:47:33.07ID:O8Vd08Ya 俺もecho
503デフォルトの名無しさん
2022/08/20(土) 23:47:54.29ID:McSzx8ex gin → beego → echo → chi イマココ
504デフォルトの名無しさん
2022/08/30(火) 15:48:26.25ID:F+/knOGo 言語仕様書の1.17を底本として翻訳してるんだけど、文書的に酷い(~;~の使いすぎが特に…)し、構成的にもクソだなぁ
underlying type に関係した性質なんて文書全体を読まんと把握できないわ
メソッド式の話では、ポインタによるレシーバーのメソッドは値による呼び出しは出来ないとか書いてあるけど、レシーバー宣言が値だろうがポインタだろうが、現行じゃ問題なく呼べるようになってる(更には値でセレクタ呼んでもポインタで呼んでも動く
つまりどこかで仕様が拡張されてるのに、仕様書は更新されてないっぽい疑惑
underlying type に関係した性質なんて文書全体を読まんと把握できないわ
メソッド式の話では、ポインタによるレシーバーのメソッドは値による呼び出しは出来ないとか書いてあるけど、レシーバー宣言が値だろうがポインタだろうが、現行じゃ問題なく呼べるようになってる(更には値でセレクタ呼んでもポインタで呼んでも動く
つまりどこかで仕様が拡張されてるのに、仕様書は更新されてないっぽい疑惑
505デフォルトの名無しさん
2022/08/30(火) 15:50:42.61ID:F+/knOGo 仕様書なんて熟読しなくても、フィーリングで書いて動いちゃうから、今まで気にしたこともなかったし
気にしなくても動くんだからいいじゃない?とも思いはする
気にしなくても動くんだからいいじゃない?とも思いはする
506デフォルトの名無しさん
2022/08/30(火) 22:31:49.83ID:1po1mIkW そんないいかげんな感覚で思い付きどんどん拡張したその結果が今のC++のていたらくだ!!
反省しなさい!
反省しなさい!
507デフォルトの名無しさん
2022/08/31(水) 00:35:38.08ID:Pib5lp7c C++があんなことになったのはむしろ、C++プログラマたるもの仕様書くらい熟読しているだろうと開発陣が高を括ってきた結果だろう
508デフォルトの名無しさん
2022/08/31(水) 10:19:04.29ID:3xNaBMUA あんなブ厚いARMを読むなんて苦行が過ぎる
悟りに至りかねない危険な行為だ
悟りに至りかねない危険な行為だ
509デフォルトの名無しさん
2022/08/31(水) 12:04:18.42ID:3xNaBMUA あるえー?
仕様書で終了ステートメントに続くステートメントに関する記述が無いんで、Playgroundでmainの最初にreturnを書いたらコンパイルエラーにならんかったし実行時エラーも起きない
到達不能ステートメントはチェックされないんだな
仕様書で終了ステートメントに続くステートメントに関する記述が無いんで、Playgroundでmainの最初にreturnを書いたらコンパイルエラーにならんかったし実行時エラーも起きない
到達不能ステートメントはチェックされないんだな
510デフォルトの名無しさん
2022/08/31(水) 12:08:28.43ID:rT6IO02J そもそも規格化されてる言語じゃないし、コミュニティが用意した言語仕様書にそこまで大きな意味はないんじゃないの?
仮に処理系と内容が違っててもどっちのバグなのか第三者にはわからないこともあるだろう
仮に処理系と内容が違っててもどっちのバグなのか第三者にはわからないこともあるだろう
511デフォルトの名無しさん
2022/08/31(水) 14:11:42.15ID:LHsSKudI いかにも仕事が雑なグーグルらしい雑な仕様の言語
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 台湾有事での集団的自衛権行使に「賛成」が48.8%、「反対」が44.2% ★5 [♪♪♪★]
- 【高市リスク】立民・小西洋之参院議員「高市総理がとんでもない安全保障オンチで外交オンチ」★2 [ぐれ★]
- 高市早苗首相、独自貫いた1カ月 会食ゼロ、議員宿舎で勉強漬け「飲んでる暇があれば、政策を練り、資料を読みたい」 [Hitzeschleier★]
- 【フィギュア】田中刑事、結婚を発表 [Ailuropoda melanoleuca★]
- 【MLB】大谷翔平、山本由伸、佐々木朗希WBC出場辞退が確実に! トランプ大統領「ロス五輪最優先」指令 どうなる侍ジャパン [牛丼★]
- 【立憲民主党】「質問レベルの低さが立憲の存立危機事態」台湾有事発言を引き出した立憲“執拗追及”が波紋… ★2 [尺アジ★]
- 【NJPW】新日本プロレスワールド part.2413
- 【NJPW】新日本プロレスワールド part.2412
- 競輪実況★1606
- 他サポ 2025-261
- ハム専ファンフェス
- 2025 SUPER FORMULA Lap18
- 【実況】博衣こよりのえちえちKoZMy3D晩酌🧪❄🫘
- 【ござ専🏡】風間隊🥷集合でござる🏯【風間いろは🍃】
- 【悲報】日本人、突然全員高市早苗の反転アンチになる。外交勝負服発言がどうしても許せない模様 [517791167]
- 高市早苗「G20サミット、なめられない服を選びました。外交交渉でマウント取れる服買わないとなぁ」大炎上★4 [165981677]
- 【誰でも】雑談広場★0
- 中国のSNSで昭和帝と高市早苗が大流行 [237216734]
