Go language part 3

■ このスレッドは過去ログ倉庫に格納されています
2019/10/17(木) 21:38:04.78ID:wMsZ+t6y
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。

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

日本語訳
http://golang.jp

※前スレ
Go language part 2
https://mevius.5ch.net/test/read.cgi/tech/1510395926/
2020/05/27(水) 01:44:41.20ID:lDZQxe+h
構造体の初期化で省略されたフィールドを既定値で初期化する方法を考えてたんだけど、こんなやり方でも構造体を初期化できるんだな(アンチパターンって言われそうだけど)
type Logger struct {
_ struct{}
mutex *sync.Mutex
Prefix string
Writer io.Writer
}
func (l Logger) New() *Logger {
l.mutex = &sync.Mutex{}
if l.Writer == nil {
l.Writer = os.Stdout
}
return &l
}
func main() {
l1 := Logger{}.New()
l2 := Logger{Prefix: "Looger: "}.New()
}
2020/05/31(日) 22:30:09.36ID:MeZ7svrP
https://www.techempower.com/benchmarks/#section=data-r19&;hw=ph&test=composite
webフレームワークのベンチマーク比較
1位にC#の新FW「dragon」ってのが入って話題になってた
これechoが入ってないのが気になるんだけど
流石にdjangoとかに負けると思えんし
どうなってんのこれ
2020/05/31(日) 22:39:20.95ID:8Mxh+OkW
drogonな
しかもC++じゃなね?
ttps://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/C%2B%2B/drogon
2020/05/31(日) 23:27:34.17ID:MeZ7svrP
はい。諸々すみませんでした(´・ω・`)

echoはなんかあったのかな
使ってるからゴタゴタとかちょっと気になる
iris?だっけ?(うろ覚え)goは前にも消滅したFWあったし
2020/06/01(月) 00:44:15.52ID:0lojqVgc
aspnetcoreって結構速かったんだな
2020/06/01(月) 00:58:25.61ID:pVetmaYN
ginはいるね
2020/06/01(月) 01:12:53.36ID:RpkIRyj6
>>620
汎用フレームワークでここまでパフォーマンスいいのはすごいよね
2020/06/01(月) 08:54:16.54ID:glX8U9VC
MSはaspnetcoreのベンチマークにTechEmpowerを使ってることを公言してるんで眉唾
オーバーフィッティングの可能性がある
2020/06/01(月) 08:59:51.67ID:RpkIRyj6
>>623
ふーん具体的には?
2020/06/01(月) 09:09:20.85ID:glX8U9VC
具体的にも何も
MSがTechEmpowerのシナリオをaspnetcoreのベンチマークとして使っているのは事実だし、TechEmpowerに対してAzureのクレジットの提供までしてる
https://github.com/aspnet/Benchmarks
https://www.techempower.com/blog/2016/11/
癒着とかズルとかそういうことじゃなくて、ソフトウェアが特定のベンチマークのシナリオに対して過剰に最適化されるというのはよくある話でしょ
2020/06/01(月) 09:33:53.72ID:RpkIRyj6
ケチつけたい人は口だけならなんとでも言えるからね
2020/06/01(月) 09:36:11.66ID:EwlGxu65
信じる者は救われる
2020/06/01(月) 09:42:56.72ID:XQZordO8
学習に使ったのと同じ入力で評価してるわけだからまさにオーバーフィッティングだね
論理的に公平になり得ない
まあ他の上位陣も一緒なんだろうけど
2020/06/01(月) 09:51:09.76ID:uzzQenht
お気に入りのフレームワークの順位が低くて悔しい人たち
2020/06/01(月) 10:47:32.29ID:XZPQztQU
>>607 での Cython との比較でも、Go 側が「並列化してない」という批判がコメントに寄せられてるけど訂正されてないんだよな
つまり足を縛って比較して Python 負けてないよ!と主張している記事
2020/06/01(月) 10:50:08.36ID:C06u/BLG
qiitaのは、あそこのあるあるで理解しないで書いてるだけだ
意図して縛ってるんじゃなくて、わかってないだけ
2020/06/04(木) 15:37:13.98ID:Sjg+zlaz
セットアップとかPythonで書かれてたりすることが多くて、在宅学習でセミナー受講したりしはじめてる

スライスってPythonとかが由来なんだな
でもar[-1]とか、そんなの要るの?という書き方が多いな
覚えるのメンドクサ
2020/06/04(木) 15:40:02.38ID:Sjg+zlaz
>>632
正直、Go脳と罵られても仕方ないw
2020/06/07(日) 10:34:28.20ID:7hGJT77n
なぜかVScodeで保存しようとすると、go listが大暴走して動かないようになってしまった
リファクタリング中でぐちゃぐちゃな状態だから臭いけど
635デフォルトの名無しさん
垢版 |
2020/06/11(木) 06:50:08.94ID:W3hFmJjT
スクリプト言語としてのGo
https://www.infoq.com/jp/news/2020/06/go-scripting-language/?itm_source=infoq&;itm_medium=popular_widget&itm_campaign=popular_content_list&itm_content=
636デフォルトの名無しさん
垢版 |
2020/06/11(木) 09:58:07.91ID:lkbUBWj2
無駄に長いURLに意味はあるのか?
https://www.infoq.com/jp/news/2020/06/go-scripting-language/
2020/06/11(木) 16:30:03.15ID:puJvD3me
TypeScriptがあるから要らんすね
2020/06/12(金) 16:07:02.79ID:6Yfh5mGy
JavaでdirectXやるにはCじゃ無くてGoって聞いて来たんだけどホント?
何から始めたら良い?
639デフォルトの名無しさん
垢版 |
2020/06/12(金) 16:13:47.97ID:1pXOSbLZ
アホか
お前が自分で言っただけだろ

https://mevius.5ch.net/test/read.cgi/tech/1586142285/796
796 デフォルトの名無しさん sage 2020/06/12(金) 15:39:27.21ID:6Yfh5mGy(1)
証拠は俺、天下無双さん
他のスレでJavaでdirectXするにはC覚えろみたいに言われたんだけどGOやったら出来る?
2020/06/12(金) 16:20:15.28ID:6Yfh5mGy
>>639
ほかスレで案内されたから

【C++】 DirectX初心者質問スレ Part41 【C】

http://itest.5ch.net/mevius/test/read.cgi/tech/1521786252/505

0505 デフォルトの名無しさん 2020/06/12 15:46:34

続きはGoスレ
2020/06/13(土) 00:50:26.26ID:4pgJdF6v
その最後の行は
「続きはGoスレへGo!」にするべきだった
642デフォルトの名無しさん
垢版 |
2020/06/17(水) 22:30:52.85ID:86TiijZ7
Go言語のChannelはチャネル、チャンネルのどっちの読み方が正しいの?
チャネルは多いけど最新のGo言語の本ではチャンネルと書いてある
2020/06/17(水) 22:52:58.26ID:8/53+M2F
英語の音を無理やりカタカナ語で表現してるだけだから
どっちがっていうと難しくない?
一応発音的にはチャンネルよりチャネルの方が近いと思うけど
日本語的にはチャンネルという読み方の方がなじんでるし
2020/06/18(木) 08:21:30.61ID:RT744x39
正解は「チャノォー」です
2020/06/18(木) 09:30:03.51ID:VEwWQ4Xk
正解は「チャネ」です
俺にはそう聞こえるから間違いないです
2020/06/18(木) 09:43:31.78ID:jBRL/Eep
チャノ
2020/06/18(木) 09:59:21.97ID:8/3vTp6f
チャゥノゥ
2020/06/18(木) 10:53:06.36ID:fvUfFECc
英語は聞いたままをカタカナにするのが良いらしいぞ
https://ejje.weblio.jp/content/Channel

チャノゥ、と聞こえるので「チャノ」に一票だな
2020/06/19(金) 07:17:53.69ID:oFfAVAYE
cmd フォルダなのに main パッケージにしなければならないのはなんとかしてくれ
go build cmd/main.go だと動かない exe が出来るし
go run cmd/main.go だと cannot run non-main package

なんで main パッケージなんてあるんだ?
main() 関数あったらどのパッケージだろうと実行させりゃいいじゃん?
2020/06/19(金) 08:23:18.84ID:oFfAVAYE
Javaやらと同じでパッケージの仕様が練られてないんだよな
C#みたいにフォルダ?関係ないね、namespace で書けよ
だと嬉しい
2020/06/19(金) 09:59:49.78ID:cY3u7e4Z
cmdフォルダのpackage cmdを他からインポートすれば良いのでは?
2020/06/19(金) 10:18:48.69ID:oFfAVAYE
そりゃmainフォルダにすれば解決なんだけどさ

パッケージがディレクトリのパスでアクセスするimport機構なのに、mainパッケージだけ例外というのがモニョる
2020/06/19(金) 10:24:08.64ID:oFfAVAYE
単に、mainパッケージだけ例外、というのが残念だという愚痴に過ぎないよ
回避以前に、例外なんだと納得すれば問題はないもんな
2020/06/19(金) 17:37:14.13ID:Kn9/9Nuz
pythonでいう__name__ == ‘__main__’を外出しした感覚だと思う
変にCを引きずってるからおかしなことになった
ぶっちゃけかなりわかりにくいと思う
655デフォルトの名無しさん
垢版 |
2020/06/21(日) 11:24:25.44ID:vfiIwLIM
https://play.golang.org/p/Ido4pfGMpHn

if s=="a" {
return a()
} else {
return b()
}
の else 文で
if block ends with a return statement, so drop this else and outdent its block (move short variable declaration to its own line if necessary)
と go-lint が吐き出すんだけど、どう書けばいい?
2020/06/21(日) 11:26:37.35ID:vfiIwLIM
正直、こないだからgolintは腐ってない?
2020/06/21(日) 11:49:23.56ID:athxwRrE
if s=="a" {
return a()
}
return b()
2020/06/21(日) 12:04:53.11ID:vfiIwLIM
おおう、ありがとう
2020/06/21(日) 13:18:25.60ID:tbjMp+cP
それってgofmtで自動で直してくれるんじゃないの
2020/06/21(日) 13:41:52.84ID:vfiIwLIM
セーブ時のフォーマットでは直してくれてない
gofmt呼んでるのかわからない

しかし、if ブロックで return してたなら、確かに else は不要
コーディングスタイルまで口出しするとは、他の書き方許さん理念は極まってるもんだな
2020/06/21(日) 14:04:24.81ID:TjPGVxwO
Goのバージョン30ぐらいにはコードを書かなくても全部自動生成してくれるようになるよ
2020/06/21(日) 20:37:22.98ID:HI56XBlv
たのしみ
2020/06/21(日) 22:24:56.84ID:85zGBKLZ
Goがブレインハッキングすると聞いて
2020/06/21(日) 22:35:42.11ID:f5OiD0I/
go+いいやん
https://github.com/qiniu/goplus
2020/06/21(日) 22:40:20.19ID:x1/M2+NK
オーケーGo
クリーンアーキテクチャで掲示板作って

これでモダンな技術の5chが作れる時代が来ます
2020/06/22(月) 11:38:02.76ID:Cm+rhTCh
そういや、range キーワードって省略されても構文解析できそうな気がするんだけど、なんか問題あるのかな?
2020/06/22(月) 11:40:50.79ID:Cm+rhTCh
代入として見ると、一貫性が無くなるからかな?
2020/06/23(火) 00:55:56.74ID:JUPHg4sS
そうだね、一貫性が無くなるよね。バッドプラクティス度合いで言うと最悪ウンコをLv10としてLv10だな
2020/06/24(水) 21:07:48.82ID:++yRJMmE
Scalaかな?
2020/07/05(日) 17:58:02.65ID:3hRtzTvh
すんごい基礎的な疑問

go get した外部パッケージって、呼び出されないソースもコンパイルされてリンクされる?
2020/07/05(日) 18:02:06.09ID:gmGxEZ+k
いいえ
2020/07/05(日) 18:06:42.96ID:3hRtzTvh
>>670
詳しく書くと、例えば
import "github.com/hoge/pkg/util"
したら、util に涛ってる全ての滑ヨ数が、呼び出bオしなくてもリャ塔Nされたりすb驕H
(更にはmainパッケージとか別のパッケージも)
2020/07/05(日) 18:07:40.70ID:3hRtzTvh
>>671
ありがとうございます
不意に心配になってしまいました
2020/07/05(日) 20:01:56.65ID:0gld4/HX
デカいプロジェクトの時のパッケージ構成ってどうしてる?dddはなんかやり過ぎ感あるし
2020/07/08(水) 22:34:33.70ID:tDYsCvpq
気付いてなかったけど、VScodeでgo.modのrequireにカーソル合わせたら、パッケージを最新バージョンにアップデートするかが出てきた
2020/07/12(日) 08:52:10.08ID:abSV8fb7
先週、golang.jp が復活した
2020/07/18(土) 10:23:07.73ID:9EMumvg2
>>655
if e, err := hoge(); err!=nil {
return e.method()
} else {
return err
}
と書きたいのに、外に出せとか
外に出すと今度はerrが定義されてないとか言うから、errをブロック外でvar定義しなきゃならん
頭悪いよなgolint
2020/07/18(土) 11:21:37.51ID:/ePLcmBm
えーと
2020/07/18(土) 11:25:06.59ID:6UJBCs7F
>>677
話は変わるけど err!=nil は err==nil なんじゃねーの
2020/07/18(土) 11:55:59.23ID:9EMumvg2
>>679
おおっと!
2020/07/18(土) 12:18:15.74ID:sbSUEl2y
e,err :=hoge()
if err !=nil{
return err
}
return e.method()

の方が自然じゃね
2020/07/18(土) 12:23:34.88ID:sbSUEl2y
return _,err

return e.method,nil

とかになるかもしれんが
683デフォルトの名無しさん
垢版 |
2020/08/02(日) 13:07:30.10ID:scrCUlqp
Go, Kotlin Swiftの文法対応表を作って欲しいぜ
2020/08/12(水) 09:26:40.73ID:PUqooE+h
Go 1.15 is released
https://blog.golang.org/go1.15
2020/08/13(木) 18:01:27.94ID:2DHzeARd
>>684
英語だから何書いてあるかわからないよ〜(;O;)
2020/08/13(木) 19:06:58.68ID:xsanodvm
>>685
google翻訳にぶっこめばいいだろ。
技術屋だったら英語の使い方は勉強しとき。
2020/08/13(木) 19:50:58.84ID:uooXk5Tm
今なら Deepl がオススメ
2020/08/25(火) 10:24:08.87ID:D0K2qmbJ
すんでで気がついて事なきを得たけど
参考にしたサンプルからコピーしたコードだったんで
context.Background() を、そのまま使ってた
マルチスレッドではWithCancelなどで別々に作ってやらなきゃなんないよな
2020/08/25(火) 14:37:27.29ID:QsZwrXdx
英語読めないって人って高卒?
受験で勉強すると思うのだが
2020/08/25(火) 23:26:52.17ID:Y7jc20E9
>>689
Golang Cafe — The Best Place To Find Your Next Golang Job
https://golang.cafe/about
https://twitter.com/golangcafe
https://www.youtube.com/channel/UCq4YrlwwXwF74Z3g-VDae2w/videos

「!gocafe remote」をDuckDuckGoで検索
https://twitter.com/5chan_nel (5ch newer account)
2020/08/31(月) 11:00:12.17ID:4ktuLIOK
ホストがMacなんだけど、dockerでgolang/Fyneを試してみたいんだけど無理かな?
なんかXエラーみたいな感じなの
2020/08/31(月) 13:01:38.43ID:rMwNX/5+
iOSはBSDベースなんだから余程アップルが魔改造してなきゃBSDと同様な程度にはサポートされてるだろ?
BSDでリリースされてるかどうか知らないんだが
2020/09/04(金) 13:17:23.06ID:y4RkOJ/U
まずgolangに関係のない話
chrome だけかもしれないけど XMLHttpRequest だと単純リクエストなのに CORS に引っ掛かってしまう

で、ここから本題
echo 使ってるんだけど、ハンドラ別に allow なオリジンを切り替えたいんだけど、やり方が分からなかった
orz
2020/09/06(日) 14:36:03.50ID:l3n8psbq
a := make([]int, 0)

makeの第一引数って何を渡してるの?
普通のプリミティブじゃないよね
2020/09/06(日) 15:27:49.33ID:FQOSALvE
長さだよ。2番目は容量な
2020/09/06(日) 15:50:34.25ID:iNxLllkp
[]intが第一引数で、0が第二引数じゃろ?
2020/09/06(日) 19:34:19.64ID:uoPkQvi9
言語仕様にスライス、マップ、チャネルの型って書いてあるじゃん
2020/09/06(日) 19:37:12.75ID:gKeBUEkF
その辺は最近のモダンな言語からしたらすげー泥臭い仕様だよな
2020/09/06(日) 20:33:01.20ID:gGwX7R3F
なんか全体的にそんなところがあるよな。べつに機能的に問題があるというわけじゃないんだが。
2020/09/06(日) 21:12:04.30ID:l3n8psbq
"[]int"だとstringだけど、ダブルクォーテーションなしだと何を渡してるんだろうと思って
2020/09/06(日) 21:17:56.45ID:uoPkQvi9
確かにもやっとしないでもないね
t := []string
とかで型の変数を作れる訳でもないのにポッと出てくる型指定
2020/09/06(日) 21:28:38.24ID:6MGWJWDR
引数に見えて引数ではない構文の一部
2020/09/06(日) 21:49:44.73ID:uoPkQvi9
makeは組み込み関数にカウントされてるから、むしろ型を変数として生成できないという縛りなんだな

滅多にmake関数使わないな
チャネルの容量を設定する時くらい
固定長配列なんて作らないし
2020/09/06(日) 21:53:27.07ID:uoPkQvi9
構文見てて思った

new関数なんてあったのか
使ったことある?
2020/09/07(月) 00:08:24.76ID:tKSaDgWF
makeが関数でrangeが式なの違和感あるんだよな
逆であるべきなのではと思ってしまう
2020/09/07(月) 00:52:09.45ID:ocp9ke30
その辺は一貫性より実用性を重視した結果だろう
2020/09/10(木) 17:49:37.70ID:iYKQgeEI
go: finding dmitri.shuralyov.com/gpu/mtl latest
go: downloading dmitri.shuralyov.com/gpu/mtl v0.0.0-20191203043605-d42048ed14fd
go: extracting dmitri.shuralyov.com/gpu/mtl v0.0.0-20191203043605-d42048ed14fd
build dmitri.shuralyov.com/gpu/mtl: cannot load dmitri.shuralyov.com/gpu/mtl: no Go source files

● 根本原因
dmitri.shuralyov.com が落ちてるんで GCP のビルドが通らない

● 状況
go.sum 見てみるとfirebaseが要求してるパッケージ
したがって firebase を使って GCP でサービスを提供しているすべてに影響するはず

こまるわー
2020/09/10(木) 17:52:24.85ID:iYKQgeEI
既存のパッケージがGOPATHにはあるはずなんだけど、どうしたらいい?
2020/09/10(木) 18:01:50.68ID:iYKQgeEI
firebaseにはissue上げたけど
2020/09/10(木) 18:56:30.40ID:iYKQgeEI
なんとなくGCPのビルドシステムの問題にも思えてきた
だってGOPATH(~/gopath/pkg)には一式存在してるもん
なんでダウンロード(というか最新版チェックしに行ってる?)できないからってビルドを失敗にすんのよ
2020/09/10(木) 19:25:21.92ID:iYKQgeEI
いや困ったね…

インポートを辿ったら
https://github.com/googleapis/google-cloud-go
が原因っぽい

個人ホストに依存しちゃうライブラリって、ビジネス的に極めて不味くないか?
2020/09/10(木) 19:46:17.35ID:QWaq+avL
個人ホスト?
2020/09/10(木) 20:19:53.75ID:iYKQgeEI
>>712
dmitri.shuralyov.com って個人じゃないのかな?
企業ってこともあるのか
2020/09/11(金) 00:38:28.29ID:u7dYfbNO
よかった復活した
そしてやはり個人持ちのホストの模様
ホストでしっくりこないならサーバー
Google Domainsでドメイン管理してるからGoogleCloud上にあるのかも
2020/09/11(金) 20:06:33.99ID:fDVUo6av
しかし個人のホストからimportするリスクやばいな
Goチームの人だから許されてるのか?
2020/09/11(金) 20:12:33.09ID:ICNKkV5S
GitHubかGoogleSourceRepositoryにホストすればいいのにな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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