Go language part 2

レス数が1000を超えています。これ以上書き込みはできません。
1
垢版 |
2017/11/11(土) 19:25:26.19ID:X8lWnCzG
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。

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

日本語訳
http://golang.jp

※前スレ
Go language part 1
http://mevius.5ch.net/test/read.cgi/tech/1381374291/
2019/10/16(水) 21:25:43.79ID:mOka02DZ
うちとこJava/C#が主力な会社
面白そうだから布教してみようと思ったんだけど、結局C言語からの直系なだけで、Java以降とは似て非なるものだから布教は無理なんだと、よくわかった

あいつら新人類は実体とポインタにまみれたC言語の素養がないから、うっかりと参照を代入する気楽さで構造体の実体をコピーして操作する感じのミス連発

C言語の経験なしにも関わらず、苦労せずにGo言語に慣れたって人いる?
そして、今さらポインタと実体を残したgoogleの意図も良くわからない。参照でよくね?
2019/10/16(水) 22:53:56.55ID:cnP9tzc/
ただの慣れじゃねC#の構造体も値型だし
値型の方が有利な場合がある
例えば構造体のでかい配列を作る場合は値型の方が一気にメモリ確保するから速いはず
2019/10/16(水) 23:11:13.99ID:EI1oGh2h
>>978
回り見てるとスクリプト言語出身の人はGo移行についてこれてない
Cでそれなりの規模のアプリ書いたことがある人がジワジワと良さを認識してる(すぐに良さがわからないのは共通してる)
C++出身の人はRustを気に入ってるが
2019/10/16(水) 23:48:28.74ID:mOka02DZ
ポインタと実体という概念がどうもしっくりと来ないみたい
Java以降だとプリミティブ以外は全部インスタンスの参照で統一されていてシンプルになってるから
そこいらのハードルが新規参入の障壁になってる可能性は高いんじゃないかなとか感じてる

しかし惜しいと思うのは、実体とポインタが混在しえるコンセプト
Cからの派生だからといって実体としてのインスタンス化って、本当に必要だったのかな?
&とか*なんて廃止して、全てはポインタの言い換えである参照を扱うというJavaとかのアイデアは多重間接参照(ポインタへのポインタ)が扱いづらくなる一方で概念的な単純さをもたらしてくれる
ぶっちゃけポインタへのポインタなんて、普通はそんなに使うこと無いから

参照を採用していたら、レシーバーはポインタで記述とか、実体でのセレクタでポインタレシーバーも呼び出せるとかイミフな仕様もスッキリとしたんじゃないかと
多分、ポインタを残したことには深慮遠望があるんだろうけど、使っていてイライラしてくる
2019/10/17(木) 00:01:47.10ID:wMsZ+t6y
具体的には構造体のスライスを使うために構造体ポインタのスライスを書くのがイライラ
でもポインタにしないとrangeでコピーされちゃうから
これって実はエレガントな書き方があったりする?
2019/10/17(木) 00:05:09.89ID:wphaTNNp
まあ確かにその辺は混乱する
ローカル変数の実体のポインタをリターンするとか
C脳ならありえない
2019/10/17(木) 00:16:29.41ID:tO9KeanL
Goは全然気持ち良いけどDartの酷さがやばい
あれはスクリプト言語出の人らだと大丈夫なんか?
2019/10/17(木) 00:18:24.47ID:wMsZ+t6y
>>979
構造体のデカイ配列ったって、マーシャリングして外部DLLに渡すとか極特殊な用途でしか使わなくない?
2019/10/17(木) 00:53:17.22ID:wMsZ+t6y
Goは確かに気持ち良いね、テストからカバレッジ、マップにスライス、ゴルーチンとチャネル
(でも気持ちよさの基準がCなのは否めない)
interfaceとか目から鱗だった。元ネタはなんだろ?
987デフォルトの名無しさん
垢版 |
2019/10/17(木) 17:11:40.24ID:TwA5RghT
前は動いてたのに
run も build も

package main: no Go files in hogehoge とか
can't load package: package main: no Go files in hogehoge とか
出るようになって
ハマった

ソースファイル名を _fugaufa.go みたいに _ で始まってたらあかんの?
時間還せ
988デフォルトの名無しさん
垢版 |
2019/10/17(木) 17:12:22.77ID:TwA5RghT
>>986
>気持ち良い

ガベコレとゴルーチン以外で何があるんです?
989デフォルトの名無しさん
垢版 |
2019/10/17(木) 19:03:27.04ID:3pHAMjHI
var は気持ち悪い
2019/10/17(木) 19:32:11.66ID:Fnsxe4OK
>>987
https://golang.org/pkg/go/build/#Context.Import

In the directory containing the package, .go, .c, .h, and .s files are
considered part of the package except for:

- .go files in package documentation
- files starting with _ or . (likely editor temporary files)
- files with build constraints not satisfied by the context
2019/10/17(木) 19:32:31.41ID:1/NIhUk4
>>989
言われてみれば、varって昔のBASICのlet並みに要らない子だね
2019/10/17(木) 20:40:18.77ID:fUTf6AOQ
varはバーカよけ
2019/10/17(木) 20:40:53.90ID:tO9KeanL
トップレベルの変数どうやって宣言すんだ?
2019/10/17(木) 20:46:45.50ID:fUTf6AOQ
普通にそのまま
2019/10/17(木) 21:25:40.03ID:wMsZ+t6y
変数名 型
だけでも、構文として破綻しているようには見えないもんな。C言語もそうだし
当然にvar{}も要らんし
あれ、func も不要じゃね?
なにか必要である理由ってあったかな?
2019/10/17(木) 21:27:23.25ID:wMsZ+t6y
無名関数作るとき用くらい?
2019/10/17(木) 21:37:21.35ID:wMsZ+t6y
次スレ作ります
2019/10/17(木) 21:38:38.42ID:wMsZ+t6y
Go language part 3
https://mevius.5ch.net/test/read.cgi/tech/1571315884/
2019/10/17(木) 21:42:09.40ID:su/chz7m
構文解析が楽とかだった気が

最初の方のトークンでどの構文(変数定義とか関数定義とか)なのかが分かったほうが
後の方のトークンでやっと分かるより楽
2019/10/17(木) 21:56:16.73ID:wMsZ+t6y
んー、:=で型推測をぶちこんでくるアグレッシブさなのに?1000ならIsNil()追加
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 705日 2時間 30分 50秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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