TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
C++相談室 part138
Rubyについて(アンチ専用) Part005
C言語の設計ミスった危険な関数トップ10決めようぜ
くだすれPython(超初心者用) その48【まず1嫁】
次世代言語11[Rust Swift TypeScript Dart]
HTAをもっと流行らせる計画 Part2
仮想環境コンテナ総合スレ Docker、Vagrant等
pythonista総合スレ【IOSで勉強できる】
最も美しいプログラミング言語は? Part6
プログラムに詳しくなりたい

Go language part 3


1 :2019/10/17 〜 最終レス :2020/06/13
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。

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

日本語訳
http://golang.jp

※前スレ
Go language part 2
https://mevius.2ch.sc/test/read.cgi/tech/1510395926/

2 :
>>1
テンプレが古すぎるんで作ってみたがどうだろ


公式
https://golang.org

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

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

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

3 :
golang.jpは外して良いね

4 :
golang.jp は、エイベルの古川昇部長が、社内で始めた翻訳プロジェクトだろ?
最近は、活動してないのか?

改訂2版 基礎からわかる Go言語、古川昇(エイベル)、2015

5 :
その人もうやめてるでしょ

6 :
先週から仕事でGoやることになったんだが、この言語辛すぎないか・・・?
ジェネリクスないしエラーが辛い。ジェネリクスは2.0で入るらしいが。
Goの作法だとエラーハンドリング忘れて次の処理を書けるリスクが常に孕んでてて書いてて全然安心できない。
あと詳細なエラー情報見ようとするとcustomErr,ok:=err.(CustomError)みたいにしないと情報とれないの危なすぎでしょ。
なんでカスタムエラー型認められていないの?

7 :
>>6
認められていない訳じゃない
しかし、カスタムなエラー型だと正常時にnilが帰ってきた時に
if err!=nil {} がtrue判断を食らうという厄介なバグがある
これは型付きnilというバグだが、仕様と言い張ってる模様
仕様なら、the predeclared identifier nil, which has no typeの記述とか直せや!

8 :
>>6
エラー処理を忘れるうっかりさんは例外だってキャッチ忘れるだろな
そして、エラー処理は1.13でほんの気持ちだけ改修入ってるからチェック
Is, As

9 :
O2

10 :
>>7 認められてないというよりか風潮といった感じか
カスタムエラーがstructじゃなくてinterfaceならいけるんじゃない?
まあどのみち使用しているライブラリがerror返してるからどうしようもないんだけどな
俺はMySQLのエラー番号が知りたいだけなのにどうして危険な操作を強いられるんだ

>>8 まず俺はGoのエラーと例外を引き合いに出してはいない(例外は糞だが)
例えば関数の戻り値がT,errorのような場合でerrorじゃないときだけTの戻り値にアクセスできるような仕組みが欲しい
ScalaのEitherやRustのResultのようなやつな
今はジェネリクスないからそういう実装はできないだろうけど
そもそも職場の制約で.1.13は使えないが、IsもAsも対してかわらんなって印象だわ。
ライブラリの実装者が中で返すエラーの型を変えた場合、IsやAsしててもコンパイルエラーにならず適切なエラー処理ができずに実行されてしまう。
戻り値の型できちんとカスタムエラー型を明示してくれてればコンパイルエラーで気づけるんだけどな


今さっき聞いたんだけど、2.0で入る予定のエラーハンドリング周りのサポート、error型のみが対象らしいんだってな。
2.0にはいると本当にカスタムエラーの道が閉ざされてしまいそうだけど本当にそれでええんやろか

11 :
エラー処理の観点から見るとジェネリクスないのはもう相当きついね
関数型脳は捨てるしかない

12 :
まあRustも関数型言語かというと違うけどな。標準ライブラリにはモナドないし。
ジェネリクスが必要なものに関しては今使えないから仕方がない面はあるとは思う。

ただカスタムエラー型が実質使えない状態になってるのは辛いなあとは思う

13 :
モナドあってもdo記法相当ないときついからね

14 :
exe でかいな・・・

15 :
う、うん…

16 :
2MBは静的リンクされてる実行ファイルなら普通よ
C系のリンカーの出力だとままある
動的リンクされてDLLとかアセンブリとかSOをロードする実行ファイルとは違う
ロードが速いはずというメリットもある

17 :
せやな
この特性でインスタンスの起動が早くてクラウドだと重宝するね
反面WASMとかだと辛いという話は聞いている

18 :
そもそもC/C++自体がすでに第一選択の言語じゃなくて、応答性やパフォーマンスの問題で消去法で選ばれる言語だし、
Goはそれで弾かれる側の言語なんで無理無理

Goが選択肢に入るような要件ならC++は選択肢に入らないし、逆もまた然り

19 :
しかし、C++は他に選択肢が無いというよりアセンブラより生産性が高いという消去法で選択される言語
C++よりも生産性が高いと思う人間、例えばGoogleとか俺にとっては消去法での乗り換えが充分に考えられる

20 :
あ、もうちょい書き足りなかった
つまり、ベターなアセンブラの地位をC/C++から奪おうという狙いの言語、という位置付けだと考えるよ

21 :


22 :
笑っていればいいさ、20年前にJavaが将来のメジャー言語になると言ったら馬鹿にされるのは必至だったし

23 :
まあ、linuxカーネルがCで書かれる限り、Cの牙城を崩すのは夢物語なのは間違いない

24 :
1999年ならjavaはすでにメジャー言語でしたけどね

25 :
Dと比べてどうなん?

26 :
var hoge uintptr = 123 動く(1)
hoge := uintptr(123) 動く(2)
hoge uintptr = 123 動かない(3)
hoge uintptr := 123 動かない(4)

やっぱり面倒なんだよね
良い方法ないですか
あと(2)があまり使われないのはなぜ?

27 :
>>24
ほほう、EclipseもstrutsもJITもない1.2の時代でメジャーとな?

28 :
君は20年後も笑われてると思う

29 :
使ったこと無いから的外れかもしれないけど、uintptrなんてunsafeな箇所くらいでしか使わないと思う(アーキテクチャ依存だからという理由
そんなuintptrを簡単にという意図がわからないので、解説plz

30 :
根拠も何もなく笑って誤魔化す人に笑われても痛くも痒くもないね
そこでどうぞ笑っていてくださいな

31 :
Cの整数リテラルに付けるサフィックスみたいな?
1234LL とか 1234ULL

32 :
>>27
当時のTIOBE IndexでC、C++に次ぐ3位ですけど

33 :
>>32
ぐう、認めざるを得ない

34 :
全然関係ない話
公式のドキュメントのフォントがChromeとかで汚いと悩んでたんだけど、実はGoogleのRobotoフォント入れれば良いんだな

35 :
そんなのuser.cssでいくらでも好きなようにできるじゃん

36 :
:= と = の使い分けが構文的に破綻してるように観える

37 :
var s []byte = "abc"
string(s) // OK
s.String() // undefined

var b bytes.Buffer
string(b) // cannot convert to string
b.String() // OK

なんかこの辺もいまいち

38 :
a) var hoge bytes.Buffer
b) hoge := bytes.Buffer{}
c) hoge := new(bytes.Buffer)

これは全部同じか?

39 :
cはポインタじゃね?

40 :
&xxxxx{}の方が直接的で字数も短いからnewって使ったことも無かった
何のためにあるの?

41 :
ウメは所詮ウメ

42 :
>>35
なんかしばらくしたら元に戻っちゃったんで、user.cssに戻した
面倒なんだよー

43 :
chrome拡張でuser.css使えばいいだけじゃん

44 :
errorはインターフェースだからswitchで処理するんじゃないの?キャスト使うの?

45 :
今頃書き方が気に入らないとか変な奴が増えてきたな

46 :
errorがつらすぎるError()stringだけで表現しきれないよ

47 :
たまにgoやると、そのたびにテンプレートリテラルがないことを忘れててショックを受ける

48 :
Go って GAE とか GCP 以外ではどんなところで使われてますか

49 :
>>48
https://github.com/golang/go/wiki#online-services-that-work-with-go

50 :
LLで書かれていたserver-sideの置き換え

51 :
>>48
ありがたくGogsを使わせていただいてます

52 :
>>48
ありがたくDockerを使わせていただいています。

53 :
>>48
android本体のビルドシステム

54 :
{ "name": "Tanaka", "age": 26 }
{ "name": "Tanaka"}
{ "age": 26 }
{}

みたいに中身が入ってるか不確定なjsonlファイルを上手くcsvやtsvに変換する方法ってありますか?

55 :
普通にjson.Unmarshal()するだけで、mapになるそうだから
入っていないキーは入っていないと分かるのとちがう?

設定ファイルとか使うコード書いたことないから受け売りなんだけど

56 :
いまいちカッコ悪いが、
各フィールドをinterface{}で受けて、有無をnil判定するのはどうか

type Person struct {
Name interface{} `json:"name"`
Age interface{} `json:"age"`
}
func encodeField(v interface{}) string {
if v == nil { return "" }; return fmt.Sprint(v)
}
func main() {
var persons []*Person
json.Unmarshal([]byte(`[{"name": "Tanaka", "age": 26},
{"name": "Tanaka"},{"age": 26}, {}]`), &persons)
w := csv.NewWriter(os.Stdout)
for _, person := range persons {
records := []string{encodeField(person.Name),encodeField(person.Age)}
w.Write(records)
}
w.Flush()
}

【出力】
Tanaka,26
Tanaka,
,26
,

57 :
LTSVに
https://play.golang.org/p/RHu8P0fJO8O

Golang初めて1週間未満なのでいろいろあれかもしれんが

58 :
書いた後にアレだが、 >>55 のやり方のほうが良い

var persons []map[string]interface{}

59 :
どうぞ
ttps://play.golang.org/p/JD9lfvYmddM

60 :
ポインタにしてしまうのはどうだろう

https://play.golang.org/p/bf9Top_b39H

61 :
Goってjqみたいな機能無いのか
jsonの全パターン書くの辛くないか?

{ "name": "Tanaka", "age": 26 }
だけで残りの3パターンも補完できれば汎用性のあるものができそうだが

62 :
>>61
>jsonの全パターン
何を言ってるのか分かりません

63 :
まあjq使ったほうが遥かに早いわな

64 :
>>62
{ "name": "Tanaka", "age": 26 }
{ "name": "Tanaka"}
{ "age": 26 }
{}

みたいに全部定義するのがめんどいってことでしょ

65 :
>>64
定義って、それはテストデータじゃない
テストデータ書かないでサンプル書くの?

とかすっとぼけて書いたが、誰かjsonの形式の定義が必要なサンプルコードを書いたりしたか?という話
そもそもが内容が不定なjsonを解読するって話だから、皆さんそれを読むサンプルコードを書いてる
つまり、レス主はそれらのサンプルコードを読んでないんじゃね?

66 :
Unmarshal()の引数に[]interface{}の変数のポインタを渡すと、マップとスライスで構成されたjsonの中身がエンコードされるという前提知識で話してるのに
キーをフィールドとして事前定義しなきゃならん、構造体のスライスへのポインタを渡す形式の呼び方での話を持ち出されても困るんだ
んでも、構造体を切ることをパターンと言っているのではない可能性もあって、一応確認

67 :
【質問】
goroutineはデーモンスレッドみたいにプロセスが死ぬと終了します
だから後始末をしたい場合、子にはcontext.WithCancelで終了を通知、受け取ったら後始末
そして、親はsync.WaitGroupで完了待ちしています

んでも、もっとうまい方法ってないものかな?面倒

Javaだとスレッドをinterruptして、子はInterruptExeption拾って後始末して、親はjoinして待つじゃない
主にInterruptExeptionをキャッチするコードを書くだけで済む
もしも親から狙ったgoroutineに特定のpanicを起こせるなら、recoverで拾えるかなーと…

68 :
暗黙で thread safe になるからじゃね?

69 :
Most Popular Programming Languages 1965 - 2019
https://www.youtube.com/watch?v=Og847HVwRSI

70 :
Go 10周年

https://blog.golang.org/10years

71 :
おめでとう
そして 10年で 3 スレ

72 :
>>67
狙ったgoroutineにってのが推奨されてるかはわからんけど、レシーバなり関数のパラメータなりにid持たせて、終了通知channelにそのidを送って受け取った側で処理する、とか

73 :
継承、関数オーバーライド、多態性を実装したサンプルをまとめてみた
https://play.golang.org/p/4_p8gXLRJ1j

今後のバージョンアップで機能しなくなったりとか、現状でもマズイ部分って、どれくらいだろうか?

74 :
オーバーライドしたスーパークラスのメソッドを呼び出す例が無かったんでちょっと変更
https://play.golang.org/p/XUfFldlrkqT

75 :
ローソンやめて・・・

76 :
>>73
それは多態になってない
呼出元が直接Sub.Msgを呼んでるだろ

77 :
>>76
Inheritance.Msg()じゃないの?

78 :
>>76
うん、BaseもSubも同じインターフェースに代入してメソッド呼んでるから、ちゃんと多態になってると思う
それとも俺とかレス主が多態性を勘違いしてる?

79 :
新しいサイトのurlゴーデブとか俺をバカにしてんのか?

80 :
go.dev
pkg.go.dev

デヴ乙

81 :
新しいサイト?
言語仕様ドキュメントが見つからないから、移行ではないよな?
何のためのサイト何だろうコレ

82 :
ごーでぶキュレーションサイトなのかな
https://japan.zdnet.com/article/35145511/

83 :
ああ、つまり経営者向けの広告サイトなんだな

84 :
> https://blog.golang.org/go.dev
> Today we are launching go.dev, a new hub for Go developers, to help answer those questions.
開発者向けのハブサイトだと

85 :
デブで経営者向けはないだろw
経営者ならスマート

86 :
ドメインの管理者は…

87 :
>>48
Go言語を採用して開発をしている会社一覧
https://web.archive.org/web/20191120013540/https://qiita.com/muchi/items/018c81c27f637797fcf3

88 :
なぜかVScodeでmain.goだけ"fmt"とか全くimportできなくなってしまった
language serverのリスタートもWindowsの再起動も駄目
なんじゃこりゃ、まいったね

89 :
>>88
コマンドラインからは叩けるの?
同じ現象なってたわ

90 :
>>89
コマンドラインでgolintとか叩いても何も出ないね
今は出なくなってるけど、原因がわからない
ちなみに1.13.1

91 :
>>90
俺もvscodeの再起動で治ったけど、module周りはちょいちょい不具合でるなあ。
importの警告がいきなりでてきたり

92 :
>>91
また modules か
modules ってどうなるのかな?
godoc が動かない issue も目処が立っていないらしいし

93 :
>>92
バグのあるバージョンがミラーに乗っかっちゃったらポイズニングするしかないのとかもなんとかしてほしい。
コンパチがゆえの弊害が出ている気はする。

94 :
>>88
import "./internal/config"
とか相対パス参照を止めて完全パスでインポートしたらエラーが消えた
別マシンだと1.12だったからなのか動いてたんだけど、なんだこりや

95 :
環境変数 GO111MODULE を off にセットしてみたら

96 :
言語自体はそれなりに良いんだが開発状況見てるとと将来が不安。rubyに似てる。

97 :
>>96
最初からコンセプトがシンプルだから、rubyとまではならないんじゃないかな。と、思いたい。
あとケツ持ちがでかい

98 :
>>94
go.mod に

replace internal/config => ./internal/config

と書いておくと

import "internal/config"

と書ける。 ./internal/config ディレクトリ内にも go.mod を作っておく必要があるけど

99 :
>>95
環境変数見てもgo env見ても
GO111MODULE=
と設定されていませんね
Goを始めたのが1.12だったから、そもそも必要なかったし

100 :
>>95
ん、off?空指定とは違う挙動になるのかな?


100〜のスレッドの続きを読む
[RPA]PC自動化技術総合スレ[効率化] Part.9
Kinect ハック 2台目
Gtkプログラミング on Windows!!!
Google NaCl プログラミング 2mol
Visual Studio 2019 Part3
【R】configure大嫌い【RMS】
Kotlin 6
【統計分析】機械学習・データマイニング20
オナオナ開発プロジェクト
コメント研究すれ。
--------------------
マラドーナさん「欧州の代表チームって移民だらけでおかしくね?」と正論を言ってしまう [535050937]
【テレビ】田口淳之介容疑者の護送車に映った「くまのぬいぐるみ」に注目集まる(写真あり)
McAfee SiteAdvisor
いなり寿司
チャーハン作っている所1時間誰にも見られなければ神226
aikoの@llnightnippon.com
フィンペシアを使ってる人パート111
SONY Xperia Z Ultra part46
【インド】 全土で外出禁止令・・・新型コロナ感染拡大防止
総武線快速・総武線緩行 57番列車
自家製 果実シロップスレ
■■中野区野方・・・味な街■■★4
【自動二輪】懐かしの限定解除 3【旧免許制度】
ラーメン二郎 西台駅前店52
【mobage】アイドルマスターシンデレラガールズ26420人目
Lovemusic3
絞め技【関西在住の方にお願いです】
【バーチャルYouTuber】.LIVEアイドル部アンチスレ#9313【アップランド】
ゲラン GUERLAIN 7
絡みスレ@同人板700
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼