Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。
公式
https://golang.org
公式ドキュメント
https://golang.org/doc/
公式外パッケージドキュメント
https://godoc.org
ブラウザ上で試し書き
https://play.golang.org
※前スレ
Go language part 3
https://mevius.5ch.net/test/read.cgi/tech/1571315884/
探検
Go language part 4
■ このスレッドは過去ログ倉庫に格納されています
2020/11/16(月) 04:14:40.64ID:fB5+0hxC
304デフォルトの名無しさん
2021/01/16(土) 01:46:47.49ID:1yiOpWx6 GoはPythonからのイメージすっごいある
305デフォルトの名無しさん
2021/01/16(土) 13:44:55.45ID:D2Bsg9bU go1.16にちょっと興味が出た
ファイル埋め込みをサポートしてくれるのか
ファイル埋め込みをサポートしてくれるのか
306デフォルトの名無しさん
2021/01/16(土) 16:32:55.26ID:D2Bsg9bU //go:generate って自動でコマンド実行させられるけど、この機能のセキュリティの資料ってどこ?
ビルドはユーザー権限で動かすからサンドボックスとか無し?
ビルドはユーザー権限で動かすからサンドボックスとか無し?
307デフォルトの名無しさん
2021/01/16(土) 22:52:44.09ID:WbzMKQxD セキュリティに対するケアなんか何もないよ
そもそも何のチェックもなくGitHubから直接パッケージを入れる仕様なんだから、
パッケージ作者がその気になればgo:generate云々以前に利用者のビルド成果物のバイナリに対してマルウェアを仕込むことすら造作もない
パッケージを入れるときには作者を全面的に信頼しそういう重大なリスクを受け入れていることを忘れてはいけない
そもそも何のチェックもなくGitHubから直接パッケージを入れる仕様なんだから、
パッケージ作者がその気になればgo:generate云々以前に利用者のビルド成果物のバイナリに対してマルウェアを仕込むことすら造作もない
パッケージを入れるときには作者を全面的に信頼しそういう重大なリスクを受け入れていることを忘れてはいけない
308デフォルトの名無しさん
2021/01/19(火) 22:24:32.58ID:+d4lPwTs なんか会社のPCで WSL+Ubuntu に Go をインストールしたら、こんなエラーになって使えなかった
$ go version
go version go1.13.8 linux/amd64
$ go get -u golang.org/x/text
go: extracting golang.org/x/text v0.3.5
go get: rename /home/hoge/go/pkg/mod/golang.org/x/text@v0.3.5.tmp-022669236 /home/hoge/go/pkg/mod/golang.org/x/text@v0.3.5: permission denied
$ go version
go version go1.13.8 linux/amd64
$ go get -u golang.org/x/text
go: extracting golang.org/x/text v0.3.5
go get: rename /home/hoge/go/pkg/mod/golang.org/x/text@v0.3.5.tmp-022669236 /home/hoge/go/pkg/mod/golang.org/x/text@v0.3.5: permission denied
309デフォルトの名無しさん
2021/01/20(水) 01:17:35.14ID:Rdh9isrB ぐぐったらgoのバグみたいね
310デフォルトの名無しさん
2021/01/20(水) 01:39:00.63ID:sgAeHwon これだからWSLは...
311デフォルトの名無しさん
2021/01/20(水) 01:44:37.61ID:Rdh9isrB やっぱり出てきたか、デマ吐き
312デフォルトの名無しさん
2021/01/20(水) 10:21:29.47ID:sOzWFlEJ Windows 10 Home でも出来るようになった、
WSL2 で、Docker でも使えば?
WSL2 で、Docker でも使えば?
313デフォルトの名無しさん
2021/01/20(水) 23:51:09.81ID:houPsxKw go1.16 がまだ出てないから statik 使ってるけど、コマンドラインから
go run github.com/rakyll/statik -f -src=static
叩くと、NISが
カテゴリ: 解決したセキュリティリスク
日時,リスク,活動,状態,推奨される処理,パス - ファイル名
2021/01/20 23:38:45,高,statik.exe (SONAR.SuspScript!g3) が SONAR によって検出されました,\
削除しました,解決しました - 処理の必要はありません,c:\Users\hoge\AppData\Local\Temp\go-build742135550\b001\exe\statik.exe
と容赦なく抹殺に来るんでバッチファイルから作成できない
トホホ
VScode からは実行できるんだけどなぁ
何が違うんだろう
go run github.com/rakyll/statik -f -src=static
叩くと、NISが
カテゴリ: 解決したセキュリティリスク
日時,リスク,活動,状態,推奨される処理,パス - ファイル名
2021/01/20 23:38:45,高,statik.exe (SONAR.SuspScript!g3) が SONAR によって検出されました,\
削除しました,解決しました - 処理の必要はありません,c:\Users\hoge\AppData\Local\Temp\go-build742135550\b001\exe\statik.exe
と容赦なく抹殺に来るんでバッチファイルから作成できない
トホホ
VScode からは実行できるんだけどなぁ
何が違うんだろう
314デフォルトの名無しさん
2021/01/21(木) 01:16:44.85ID:6tk1Snw3 あわしろ氏がDockerはオワコン、これからはWSLと言ってる。
315デフォルトの名無しさん
2021/01/21(木) 03:04:48.79ID:084E4D0G 推奨NGワード:あわしろ
316デフォルトの名無しさん
2021/01/21(木) 05:13:54.11ID:pnbRvl8z 推奨NGワード:NGワード
317デフォルトの名無しさん
2021/01/21(木) 05:17:47.11ID:6tk1Snw3 イクヤさんを馬鹿にしてんのか?
318デフォルトの名無しさん
2021/01/21(木) 07:41:51.93ID:JXSnM7xR >>317
バカにされているのはお前自信だぞw
バカにされているのはお前自信だぞw
319デフォルトの名無しさん
2021/01/21(木) 10:36:56.38ID:9HZQp01R >>301
これ教えてくれや
これ教えてくれや
320デフォルトの名無しさん
2021/01/22(金) 23:26:34.48ID:vuLukHTi goのパッケージで、全然違う役割で同じパッケージ名つけなくなったときみんなどうしてる?
321デフォルトの名無しさん
2021/01/22(金) 23:47:27.87ID:clRMgbeK apiwrapper2
apiwrapper3
saigo_no_apiwrapper
apiwrapper_final
こんなかんじで
apiwrapper3
saigo_no_apiwrapper
apiwrapper_final
こんなかんじで
322デフォルトの名無しさん
2021/01/24(日) 02:37:19.18ID:49bdBtsk >>321
そうかぁ...なんだかなぁ
そうかぁ...なんだかなぁ
323デフォルトの名無しさん
2021/01/24(日) 04:02:02.83ID:hPeuQsPP イクヤさんはバカじゃないぞ。
ただの嫌な奴だ。
ただの嫌な奴だ。
324デフォルトの名無しさん
2021/01/24(日) 19:31:46.17ID:tQo0lqIt import (
zenzen "xxx.com/omae/package"
chigau "xxx.com/aitsu/package"
)
zenzen "xxx.com/omae/package"
chigau "xxx.com/aitsu/package"
)
325デフォルトの名無しさん
2021/01/24(日) 22:40:05.67ID:49bdBtsk >>324
いや、自分が作ってるアプリ内でパッケージが被りそうな場合ですー
いや、自分が作ってるアプリ内でパッケージが被りそうな場合ですー
326デフォルトの名無しさん
2021/01/24(日) 23:29:36.37ID:1VpxryXU >>325
自分でも同じじゃないか?
自分でも同じじゃないか?
327デフォルトの名無しさん
2021/01/25(月) 18:17:56.09ID:d/3tjDJa >>326
たとえば、
package encrypt
っていう、APIの通信を暗号化するパッケージを自分で作ったとして、あとからユーザーがアップロードした画像を暗号化する処理作りたくなったとき、また
package encrypt
ってつけたくなるけど、最初に作ったAPIを暗号化する処理向けにすでに「encrypt」って使われてるからどうしよーってなるって話ですね
package apiencrypt
package userimageencrypt
にするのが普通ですか?
たとえば、
package encrypt
っていう、APIの通信を暗号化するパッケージを自分で作ったとして、あとからユーザーがアップロードした画像を暗号化する処理作りたくなったとき、また
package encrypt
ってつけたくなるけど、最初に作ったAPIを暗号化する処理向けにすでに「encrypt」って使われてるからどうしよーってなるって話ですね
package apiencrypt
package userimageencrypt
にするのが普通ですか?
328デフォルトの名無しさん
2021/01/25(月) 18:55:36.51ID:ViKOXBu7329デフォルトの名無しさん
2021/01/25(月) 19:17:10.86ID:d/3tjDJa330デフォルトの名無しさん
2021/01/25(月) 20:10:27.92ID:ViKOXBu7 >>329
だから公式でもやってるから気にするなw
だから公式でもやってるから気にするなw
331デフォルトの名無しさん
2021/01/25(月) 21:54:18.14ID:SeLyUu4E 何がそんなに嫌なんだ?
332デフォルトの名無しさん
2021/01/25(月) 22:12:50.28ID:yfUr2T9s 単にエイリアスのことを理解してないだけでは?
333デフォルトの名無しさん
2021/01/25(月) 23:54:29.57ID:d/3tjDJa すいません、僕のエイリアスの理解が間違ってました。↑でみなさんが言ってることが正しいです。
意味不明な事言って、誠に申し訳ありませんでした😳
意味不明な事言って、誠に申し訳ありませんでした😳
334デフォルトの名無しさん
2021/01/26(火) 00:02:10.18ID:7TBhA+72 このスレでgolangのモヤモヤが一つ解消できました。本当にありがとうございました。
335デフォルトの名無しさん
2021/01/26(火) 01:18:09.44ID:84lZ6EGP 別にgolangだけじゃなく他の言語もほぼ同じ仕様だぞ
336デフォルトの名無しさん
2021/01/26(火) 02:03:46.73ID:wg8lZWjJ 意外と素直なやつで気にいった
337デフォルトの名無しさん
2021/01/26(火) 15:48:34.40ID:7TBhA+72338デフォルトの名無しさん
2021/01/26(火) 19:32:50.53ID:QK4hy34A 公開したアプリの機能追加しようとしたらgolintがまたゴネはじめた
調べるともうdeprecatedが可決されてるんだな
Apiと書くとAPIにしなきゃ絶許とかアホな子なんで困る
調べるともうdeprecatedが可決されてるんだな
Apiと書くとAPIにしなきゃ絶許とかアホな子なんで困る
339デフォルトの名無しさん
2021/01/26(火) 19:41:08.73ID:QK4hy34A すなおにgolangci-lintに切り替えた
340デフォルトの名無しさん
2021/01/27(水) 15:46:00.33ID:dNCRGAZL 最近素直な人多いね🤗
341デフォルトの名無しさん
2021/01/27(水) 19:26:08.32ID:D9j7gzMM 素直に尿道オナニーした
342デフォルトの名無しさん
2021/01/27(水) 20:43:24.94ID:Qr3ry02h >>341
素直やなあ
素直やなあ
343デフォルトの名無しさん
2021/01/30(土) 20:27:47.43ID:Vt3mM499 ごー言語ってどんなメリットがあるの?
344デフォルトの名無しさん
2021/01/30(土) 20:40:40.31ID:qJyO6h8a 高速なWebAPIが超楽に作れる
あとは、慣れるとスクリプト代わりに使える
あとは、慣れるとスクリプト代わりに使える
345デフォルトの名無しさん
2021/01/31(日) 00:23:18.15ID:v0/+r0AQ 実行環境側で準備がいらないから、ちょっとしたツールとか作って人に配ったり、サーバーで実行したりしやすい
346デフォルトの名無しさん
2021/01/31(日) 02:08:30.36ID:sEqffcUE linuxとwindowsで動かすツールにjava使ってたんだけど
少しづつGoに移植してる
かなり良い感触
ついにjavaを捨てられる
少しづつGoに移植してる
かなり良い感触
ついにjavaを捨てられる
347デフォルトの名無しさん
2021/01/31(日) 02:54:28.37ID:pT/gblY8 >>345
それがあったか!
あとgithubからcloneしてこなくても go run できるのは意外と便利
でもこないだ statik を run したらノートンが怒って temp に作成された statik のイメージを問答無用で削除
build して実行したら動くから、temp にある exe がローカルディレクトリのファイルに書き込みするとヒューリスティック検知が危険と判断してるんだな、多分
それがあったか!
あとgithubからcloneしてこなくても go run できるのは意外と便利
でもこないだ statik を run したらノートンが怒って temp に作成された statik のイメージを問答無用で削除
build して実行したら動くから、temp にある exe がローカルディレクトリのファイルに書き込みするとヒューリスティック検知が危険と判断してるんだな、多分
348デフォルトの名無しさん
2021/02/03(水) 21:45:23.85ID:CpFR0HHF349デフォルトの名無しさん
2021/02/03(水) 22:46:07.77ID:KfiW2k04 >>348
この例だと statik を使うとき、go.mod に github.com/rakyll/statik を追加しとくじゃない
ここで、statik でファイルを固めるために statik コマンドをビルドしなくても
$ go run github.com/rakyll/statik -f -src=static
と打つと実行できるの
でもノートン入れてると危険な動作だと判断されるんで、run じゃなく build して実行ファイル作らないとダメだった
この例だと statik を使うとき、go.mod に github.com/rakyll/statik を追加しとくじゃない
ここで、statik でファイルを固めるために statik コマンドをビルドしなくても
$ go run github.com/rakyll/statik -f -src=static
と打つと実行できるの
でもノートン入れてると危険な動作だと判断されるんで、run じゃなく build して実行ファイル作らないとダメだった
350デフォルトの名無しさん
2021/02/03(水) 23:03:33.06ID:KfiW2k04351デフォルトの名無しさん
2021/02/04(木) 00:47:53.46ID:J8c7zBiK >>349
ほーー!これ知らなかった。有益な情報ありがとう!
ほーー!これ知らなかった。有益な情報ありがとう!
352デフォルトの名無しさん
2021/02/06(土) 07:34:59.64ID:b91D85Wz importで現在のpackage宣言からの相対パスが使えなくなったのはクソ仕様変更だと思う
おのれ Russ Cox
おのれ Russ Cox
353デフォルトの名無しさん
2021/02/06(土) 07:40:15.26ID:b91D85Wz 具体的に恨んでることは、あるサイトのコードを使い回して別のサイトのコードを書くとき、import を全部修正しなきゃならん
というかしてる
Linux ならまあ sed で置換すればなんとかなると思うけど、Windows で開発してるし
というかしてる
Linux ならまあ sed で置換すればなんとかなると思うけど、Windows で開発してるし
354デフォルトの名無しさん
2021/02/06(土) 07:42:46.96ID:b91D85Wz あ、元のサイトの一部のコードは使い回すために go get して import してるから、sed でも面倒だわコレ
355デフォルトの名無しさん
2021/02/06(土) 07:48:05.22ID:b91D85Wz なんか上手いことやってくれるツールってあるの?
356デフォルトの名無しさん
2021/02/06(土) 10:01:04.65ID:3JTS0SZe タダで使わせてもらってるくせに糞とか恨むとか
そういう心根だから日本はソフトウェア技術で海外に負けるんだよ
そういう心根だから日本はソフトウェア技術で海外に負けるんだよ
357デフォルトの名無しさん
2021/02/07(日) 03:51:41.73ID:XZf/W+8m タダで使わせてもらってるじからって大人しくしてるほうが進展しないと思うよw
もちろん活発にフィードバックが最善だが
もちろん活発にフィードバックが最善だが
358デフォルトの名無しさん
2021/02/07(日) 17:49:54.31ID:7CsMj5zJ 趣味でいじってて、検索に使うAPIを作ろうとしてるんだけど
関数の動的な引数について
ぐぐると出てくるFunctional Option Patternってどれくらい使われてるのかね
structをポインタで渡す(nil判定のため)でいいかなと思い始めてるんだけど
関数の動的な引数について
ぐぐると出てくるFunctional Option Patternってどれくらい使われてるのかね
structをポインタで渡す(nil判定のため)でいいかなと思い始めてるんだけど
359デフォルトの名無しさん
2021/02/07(日) 19:19:28.11ID:ChxxRz8n360359
2021/02/07(日) 19:21:38.26ID:ChxxRz8n Functional Optionの話ね
補足
補足
361デフォルトの名無しさん
2021/02/07(日) 19:31:24.83ID:9kVjsnaW structをポインタで渡すという一文で、わかってるのかな?という疑念が
FOP はざっくりと、アレンジする対象のオブジェクトを受けて内容を好きに設定する関数を、引数として渡す手法
ここでその関数の引数に対象structのポインタじゃなく実体渡しで受けるようにすると、コピーを書き換えちゃう事になるから設定しても動かない
ポインタで渡す以外の話にはならない
FOP はざっくりと、アレンジする対象のオブジェクトを受けて内容を好きに設定する関数を、引数として渡す手法
ここでその関数の引数に対象structのポインタじゃなく実体渡しで受けるようにすると、コピーを書き換えちゃう事になるから設定しても動かない
ポインタで渡す以外の話にはならない
362デフォルトの名無しさん
2021/02/07(日) 19:38:47.51ID:9kVjsnaW もしかしてstructをというのは、FOPではなくオプション用のstructを用意するという話か
363デフォルトの名無しさん
2021/02/07(日) 21:18:42.15ID:7CsMj5zJ364デフォルトの名無しさん
2021/02/08(月) 14:27:57.38ID:UNTBzX6A 13年目のGo言語 - Steve Francia氏との対話から見えたそのエコシステム、進化、そして未来
https://www.infoq.com/jp/articles/go-language-13-years/
https://www.infoq.com/jp/articles/go-language-13-years/
365デフォルトの名無しさん
2021/02/10(水) 23:54:39.22ID:yW2IX31f 18か月毎に、Goのユーザベースは2倍に膨れ上がっているのです。これはつまり、今日行われる変更は、5年前に比べて10倍の人々に影響を与える、という意味になります。
366デフォルトの名無しさん
2021/02/10(水) 23:55:51.44ID:yW2IX31f Goが現在備えている依存管理は素晴らしいものですが、おそらくは5年前に実現するべきものでした。
この遅れが難しい問題をより難しくして、結果的に必要以上のストレスをコミュニティに起こしているのです。
同じように、現在開発を進めている大きな言語変更がジェネリクスです。これもコミュニティに大きな影響を与えるでしょう。
もし最初からすべてをやり直すことができて、この機能がいかに重要かを事前に理解しておくことが可能だったならば、おそらく7年前から本格的な開発を始めておきたかった、と思っています。
この遅れが難しい問題をより難しくして、結果的に必要以上のストレスをコミュニティに起こしているのです。
同じように、現在開発を進めている大きな言語変更がジェネリクスです。これもコミュニティに大きな影響を与えるでしょう。
もし最初からすべてをやり直すことができて、この機能がいかに重要かを事前に理解しておくことが可能だったならば、おそらく7年前から本格的な開発を始めておきたかった、と思っています。
367デフォルトの名無しさん
2021/02/10(水) 23:56:43.35ID:yW2IX31f 言語として不足している唯一の大きな機能はジェネリクスです。先程も話したように、現在はこの開発に注力しています。
368デフォルトの名無しさん
2021/02/10(水) 23:58:38.65ID:yW2IX31f ・Goは優れた既定言語(default language)で、システムやサーバ、API、デーモン、データベース、Webサイトなどに適しています。Goはパフォーマンスと開発者の生産性を、高いレベルで両立させています。
・Dart + Flutterは、GUIベースアプリケーション(モバイルおよびデスクトップ)に適しています。Flutterは、複数のOSとフォーマットで動作する単一クライアントアプリケーションの記述というアイデアを、高いレベルで実現しました。
・Rustは、詳細なコントロールが必要な場合に適しています。低レベルな処理やカーネルなどです。Rustは精密性に優れていますが、その分、複雑さは大きくなります。このトレードオフが理に適っている場合もあります。そうであれば、Rustが最適です。
・Dart + Flutterは、GUIベースアプリケーション(モバイルおよびデスクトップ)に適しています。Flutterは、複数のOSとフォーマットで動作する単一クライアントアプリケーションの記述というアイデアを、高いレベルで実現しました。
・Rustは、詳細なコントロールが必要な場合に適しています。低レベルな処理やカーネルなどです。Rustは精密性に優れていますが、その分、複雑さは大きくなります。このトレードオフが理に適っている場合もあります。そうであれば、Rustが最適です。
369デフォルトの名無しさん
2021/02/10(水) 23:59:45.15ID:yW2IX31f Goは1度の週末で学べますし、2週間あればプログラミングに習熟することができます。もっと早い人もいるでしょう。他のいくつかの言語で経験があれば、Goは非常に短期間に習得できます。
Goを導入した企業と会った時に、彼らが一貫して話してくれることのひとつが、Goは習得の容易な言語だ、という点なのです。
Goを導入した企業と会った時に、彼らが一貫して話してくれることのひとつが、Goは習得の容易な言語だ、という点なのです。
370デフォルトの名無しさん
2021/02/11(木) 02:00:07.60ID:Nn8EIl24 ジェネリクス結局どうなるんだよ
371デフォルトの名無しさん
2021/02/11(木) 03:54:00.93ID:y89gNJMQ 議論の末リジェクトされたって結構前に見たけども
372デフォルトの名無しさん
2021/02/11(木) 06:20:02.21ID:MYnJXR31 あったら便利かも知れないけど、無くても不便を感じてないんだよな
多分、普段に書いてる案件の方向性の違いじゃないかな
ライブラリ書きな人は欲しがるのかも
多分、普段に書いてる案件の方向性の違いじゃないかな
ライブラリ書きな人は欲しがるのかも
373デフォルトの名無しさん
2021/02/11(木) 06:24:20.93ID:Nn8EIl24 Webアプリだと必要なケースはほぼないかな
複雑なデータ構造を扱う分野とか数値計算なら必要だろうね
複雑なデータ構造を扱う分野とか数値計算なら必要だろうね
374デフォルトの名無しさん
2021/02/11(木) 07:33:17.81ID:MYnJXR31 複雑なデータ構造というより、多様なクラスじゃないか?
クラスが異なるが構造は同じ、といった場合に処理を使い回すための機能だから
たとえばList<Animals>とか
クラスが異なるが構造は同じ、といった場合に処理を使い回すための機能だから
たとえばList<Animals>とか
375デフォルトの名無しさん
2021/02/11(木) 09:48:01.53ID:XTRtAjen https://github.com/golang/go/issues/43651
spec: add generic programming using type parameters #43651
Labels: Proposal Proposal-Accepted Proposal-FinalCommentPeriod
アクセプトされたぞ
spec: add generic programming using type parameters #43651
Labels: Proposal Proposal-Accepted Proposal-FinalCommentPeriod
アクセプトされたぞ
376デフォルトの名無しさん
2021/02/11(木) 09:52:52.27ID:XTRtAjen あと議論の末リジェクトされたのはエラーのキャッチでは?
https://github.com/golang/go/issues/43777
proposal: Go 2: catch error handler #43777
https://github.com/golang/go/issues/43777
proposal: Go 2: catch error handler #43777
377デフォルトの名無しさん
2021/02/11(木) 10:26:29.66ID:5PMeOFeV378デフォルトの名無しさん
2021/02/11(木) 11:34:18.35ID:XTRtAjen https://blog.golang.org/generics-proposal
v1.18β(今年末)にはジェネリクスが入ってる予定だそうだから
そこからしばらくexperimental feature扱いになるとして
だいたいv1.20(再来年頭)かそこらでexperimentalじゃなくなってv2.0にするんじゃないか
まあこれは一番順調に行ったらって予想だけど
v1.18β(今年末)にはジェネリクスが入ってる予定だそうだから
そこからしばらくexperimental feature扱いになるとして
だいたいv1.20(再来年頭)かそこらでexperimentalじゃなくなってv2.0にするんじゃないか
まあこれは一番順調に行ったらって予想だけど
379デフォルトの名無しさん
2021/02/11(木) 12:43:54.91ID:qJXsIZl0 >>375
ファイナルフュージョン承認!
ファイナルフュージョン承認!
380デフォルトの名無しさん
2021/02/11(木) 13:01:17.98ID:ZLyjCLFI 実装難しそうだから相当先だろうな
特殊化をコンパイル時にやるのか実行時にやるのかすら決まってないみたいだし
特殊化をコンパイル時にやるのか実行時にやるのかすら決まってないみたいだし
381デフォルトの名無しさん
2021/02/11(木) 14:10:14.32ID:MYnJXR31 Javaのジェネリクス導入時みたいに、総称型コレクションの利用で警告を出すような真似はしないで欲しい
382デフォルトの名無しさん
2021/02/11(木) 14:18:10.77ID:MYnJXR31 なんで Java ではデフォルトで「raw型の使用を無視」にしとかないで、探して無視に指定するまでうるさく警告を出すことにしたんだろう
383デフォルトの名無しさん
2021/02/12(金) 03:53:22.35ID:Cyc/UqZY 結局仕様はほぼJavaと同じか
384デフォルトの名無しさん
2021/02/12(金) 13:19:24.35ID:vQ8mDll0 エラーキャッチリジェクトかよ・・
385デフォルトの名無しさん
2021/02/12(金) 19:55:13.35ID:IU5AN8go issue の本文で
func xxx() xxx, error
とか
nill
とか、go 使ってないような奴なのは見え見えだし、
妥当じゃないか?
func xxx() xxx, error
とか
nill
とか、go 使ってないような奴なのは見え見えだし、
妥当じゃないか?
386デフォルトの名無しさん
2021/02/13(土) 01:19:56.35ID:uGwTnb+S ジェネリック馬鹿を排除できるだけでもgoを採用する意味あるわ。
387デフォルトの名無しさん
2021/02/13(土) 02:05:58.45ID:b8+Lb4od 実務でgoやってみたいけど今は未経験の募集あまりないな
388デフォルトの名無しさん
2021/02/13(土) 02:18:54.12ID:x/Vsj8xA ジェネリクス反対派って結局何がしたかったんだろう
訳がわからん
言語の設計者でもないのに
訳がわからん
言語の設計者でもないのに
389デフォルトの名無しさん
2021/02/13(土) 03:56:17.09ID:qDntuLeS >>386
お薬かな
お薬かな
390デフォルトの名無しさん
2021/02/13(土) 05:14:35.81ID:0tM9M8c+ Java ではジェネリクス過激派による強制で多いに迷惑したから
391デフォルトの名無しさん
2021/02/13(土) 08:17:20.01ID:x5WG3KQe >>383
Javaと同じってどこが?
Javaと同じってどこが?
392デフォルトの名無しさん
2021/02/13(土) 09:26:28.23ID:0tM9M8c+ 正直、意味があるのか俺には理解できない
他の言語は継承による拡張なので共変反変が意味を持つ
でも go は継承による関係じゃなくて、インターフェースを具備しているかどうか
元々がインターフェースさえ合致していれば可換なのだから型パラメータには意味がない
そう思ってしまう
どうしても型パラメータが必要な用例、それを目立つように挙げて貰いたい
他の言語は継承による拡張なので共変反変が意味を持つ
でも go は継承による関係じゃなくて、インターフェースを具備しているかどうか
元々がインターフェースさえ合致していれば可換なのだから型パラメータには意味がない
そう思ってしまう
どうしても型パラメータが必要な用例、それを目立つように挙げて貰いたい
393デフォルトの名無しさん
2021/02/13(土) 10:56:01.28ID:QtTWHsVQ Goで便利なのはsort関数とかmap関数なんかではないの?
今まで型ごとに書くしかなかったんだし。
今まで型ごとに書くしかなかったんだし。
394デフォルトの名無しさん
2021/02/13(土) 12:32:44.33ID:0tM9M8c+ まずmapはインターフェースをキーとしても値としても使えるから問題にならない
ソートもsort.Interfaceを具備したコレクションでソートするから、Swapとかのための比較可能な値を返すメソッドをインターフェースで持てば良い
構造体はただの入れ物に過ぎないよね
ソートもsort.Interfaceを具備したコレクションでソートするから、Swapとかのための比較可能な値を返すメソッドをインターフェースで持てば良い
構造体はただの入れ物に過ぎないよね
395デフォルトの名無しさん
2021/02/13(土) 12:40:39.64ID:0tM9M8c+ インターフェースで構造体の多態性を確保してるから、それが既に型パラメータ以上の柔軟さを持ってる
なんでインターフェースよりも性質的に劣ってる型パラメータを導入しなきゃなんないの?
頭のいい人が、それでも導入が必要だと判断したのだから、そこには理由があるはず
でも頭が悪いから、俺ではissueで見つけられなかった
なんでインターフェースよりも性質的に劣ってる型パラメータを導入しなきゃなんないの?
頭のいい人が、それでも導入が必要だと判断したのだから、そこには理由があるはず
でも頭が悪いから、俺ではissueで見つけられなかった
396デフォルトの名無しさん
2021/02/13(土) 12:54:38.86ID:QtTWHsVQ >>394
インターフェイスを使ってしまうと毎回型チェックしないといかんし、コンパイル時に縛りもかけられんでしょ。
テストで網羅するといっても、ユーザに使ってもらうライブラリなんかではそうもいかん。
静的解析でもうまくいかんこともあるし、柔軟性を持ちたいのではなくて、コンパイル言語として担保したいんじゃないか?
俺は今まで型ごとに関数作ってたけど、インターフェイスでなんとかしてたって事?それも極端だな。
インターフェイスを使ってしまうと毎回型チェックしないといかんし、コンパイル時に縛りもかけられんでしょ。
テストで網羅するといっても、ユーザに使ってもらうライブラリなんかではそうもいかん。
静的解析でもうまくいかんこともあるし、柔軟性を持ちたいのではなくて、コンパイル言語として担保したいんじゃないか?
俺は今まで型ごとに関数作ってたけど、インターフェイスでなんとかしてたって事?それも極端だな。
397デフォルトの名無しさん
2021/02/13(土) 13:03:01.32ID:0tM9M8c+ >>396
というかインターフェースを型パラメータみたいな物として使っていて問題なかったと言ってるんだよ
機構として使い回すために、その機構に使いたかったらインターフェースを実装する
ソートの機構が使いたかったらsort.Interfaceを実装するでしょ
というかインターフェースを型パラメータみたいな物として使っていて問題なかったと言ってるんだよ
機構として使い回すために、その機構に使いたかったらインターフェースを実装する
ソートの機構が使いたかったらsort.Interfaceを実装するでしょ
398デフォルトの名無しさん
2021/02/13(土) 13:27:48.18ID:0tM9M8c+ >>396
そもそも何で型チェック?
メソッドの挙動やらが違うのに同じインターフェースを使ってるのか?
Javaとかの型パラメータでも、まさか中でキャストして使ってるのか?
偶然にインターフェースを実装してしまったケースなんて想定しても仕方ないと思う
それは設計ミスだから
区別用にダミーのメソッド生やしとけば?
そもそも何で型チェック?
メソッドの挙動やらが違うのに同じインターフェースを使ってるのか?
Javaとかの型パラメータでも、まさか中でキャストして使ってるのか?
偶然にインターフェースを実装してしまったケースなんて想定しても仕方ないと思う
それは設計ミスだから
区別用にダミーのメソッド生やしとけば?
399デフォルトの名無しさん
2021/02/13(土) 13:30:40.12ID:+kP5eWz9 goは組み込みで要素が型付けされた動的配列と連想配列を持ってるから、他のコレクションはあまり必要ないんだよね
それらでカバーできないようなケースってそもそも大抵は特殊な状況なんで、汎用的なコレクションではなくアプリの要請に合わせて独自に作るのが自然
それらでカバーできないようなケースってそもそも大抵は特殊な状況なんで、汎用的なコレクションではなくアプリの要請に合わせて独自に作るのが自然
400デフォルトの名無しさん
2021/02/13(土) 13:45:02.72ID:0tM9M8c+ んな意味不明なジェネリクスより
>>251 のバグを直して欲しいんだよな
>>251 のバグを直して欲しいんだよな
401デフォルトの名無しさん
2021/02/13(土) 13:54:07.96ID:QtTWHsVQ402デフォルトの名無しさん
2021/02/13(土) 14:07:47.74ID:0tM9M8c+ >>401
Sortableの配列を返すので正しい
文意からソート結果だろ?
君が型チェックしなきゃならんとか意味不明な事を言い出すからエスパーしたんだよさせるなよ
インターフェースならメソッドを呼ぶだけだから型チェックなんて話は出てこない
型チェックするってことは実体に変換しなきゃならんという話だろ
そうでない場合に考えられるケースとして、偶然に同じインターフェースを実装してしまった構造体を、偶然に渡してしまうコーディングミスを考えているとエスパーしてあげた
そんな阿呆な設計をしてるなら、引数としてるインターフェースにダミーのメソッドを生やしとけば、別のインターフェースになるから誤って渡すミスは無くなる
エスパーさせるなよ
Sortableの配列を返すので正しい
文意からソート結果だろ?
君が型チェックしなきゃならんとか意味不明な事を言い出すからエスパーしたんだよさせるなよ
インターフェースならメソッドを呼ぶだけだから型チェックなんて話は出てこない
型チェックするってことは実体に変換しなきゃならんという話だろ
そうでない場合に考えられるケースとして、偶然に同じインターフェースを実装してしまった構造体を、偶然に渡してしまうコーディングミスを考えているとエスパーしてあげた
そんな阿呆な設計をしてるなら、引数としてるインターフェースにダミーのメソッドを生やしとけば、別のインターフェースになるから誤って渡すミスは無くなる
エスパーさせるなよ
403デフォルトの名無しさん
2021/02/13(土) 14:21:47.27ID:QtTWHsVQ >>402
ソート可能なインターフェイスを受けてソート可能なインターフェイスが帰ってきても何も得しない。
[T Sortable]な関数の返り値は[]Tで十分でしょ。
結果がもう一度ソート可能かなんか必要な情報でない。
intがSortableだとして、返り値が[]Sortableだと、結果は型チェックしないとだよね。
[]intが直接帰ってきた方が効率的だし、無駄なコードではないよね。
やってることも自明。
mapとかflattenなんかなんかはジェネリクス使えないと使い物にならんと思うが。
エスパーするならジェネリクスの使いみちをエスパーしなよ。
ソート可能なインターフェイスを受けてソート可能なインターフェイスが帰ってきても何も得しない。
[T Sortable]な関数の返り値は[]Tで十分でしょ。
結果がもう一度ソート可能かなんか必要な情報でない。
intがSortableだとして、返り値が[]Sortableだと、結果は型チェックしないとだよね。
[]intが直接帰ってきた方が効率的だし、無駄なコードではないよね。
やってることも自明。
mapとかflattenなんかなんかはジェネリクス使えないと使い物にならんと思うが。
エスパーするならジェネリクスの使いみちをエスパーしなよ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国連大使「日本が中国に武力行使すると脅しをかけたのは初めて」 国連事務総長に書簡★5 [♪♪♪★]
- 【芸能】44歳・池脇千鶴、激変ぶりにネット衝撃 「まるで別人…」「変化が凄い!!」の声 [冬月記者★]
- 【🐼】パンダ、日本で会えなくなる? 中国との関係悪化で不安の声 ★2 [ぐれ★]
- なぜ立花孝志氏の言葉は信じられたのか…"異例の逮捕"が浮き彫りにした「SNSの危険な病理」 [ぐれ★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」★4 [ぐれ★]
- 竹中平蔵氏、万博は大成功だったと持論 批判していた人々にチクリ「反省の弁の一つも聞きたい」 [バイト歴50年★]
