X



Go language part 2
■ このスレッドは過去ログ倉庫に格納されています
0155デフォルトの名無しさん
垢版 |
2017/11/19(日) 02:37:25.16ID:uqF6CIR0
コード生成を嫌ってるみたいだけど、そして理解もできるけど
静的言語が動的言語並の自由度を確保しようと思ったらコード生成は避けれないと思う。

例えばちょっと前にあったdatabaseとの接続もそう。
コンパイル前にスキーマを収集して型を作るのが静的言語における最適解。
それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。

でも、そもそもコード生成嫌わないで。
生成したコードをデバッグ時に参照できるというのは、バグの解決につながりやすい。
Cで複雑なマクロを組むとエラーがわかりづらくなるけど
プリプロセッサの出力を目視できるようにすると解決できたりする。

だから Goのコード生成もプリプロセッサのコード出力くらいに考えておけばいいと思う。
0156デフォルトの名無しさん
垢版 |
2017/11/19(日) 04:15:36.04ID:ayZ5nPnf
嫌なら使わなければいい
気に入らないなら思いの丈をブログにでも書いてくれ
そろそろ黙れ
0157デフォルトの名無しさん
垢版 |
2017/11/19(日) 11:03:39.31ID:5dcaUzmV
技術的革新について話すだけのヤツはクソだ、黙って手を動かせ、と言った奴を
自分が触ったことのないテクノロジを批評するのは滑稽、と批判してみせた奴

こいつが、その素晴らしい技術でLinuxを超える何かを世の中に残せたのなら説得力が有るのだが…
結局何かしらの技術を語ってる奴は総じてクソなのは揺るがない
0158デフォルトの名無しさん
垢版 |
2017/11/19(日) 14:16:27.55ID:SsMAbqSz
>>154
いや俺はマクロは最小限(見りゃ分かる程度)しか使ってない。
そして自動生成を嫌っているのではなくて、手間が増えるのを嫌っている。

PHP, JavaScript:何も書かなくていい
Go:構造体を書き、タグ付けスクリプトを作成し、go generate してタグを付け、正しくタグがついているか確認 ← やること多過ぎ
Go:構造体を書き、タグを書く ← これのほうがまだまし

>>155
そりゃ公平な評価にはならないよ。俺は既にC言語は十分使える状況なんだから。
そしてPHPとJavaScriptにはC系言語の常識が通用したからさほど苦労しなかったが、
Goはそうではなく、色々引っかかる。
ただこれはGo言語制作陣の意図通りだし、確かにいまさら互換言語を整備する意味はないんだよ。

> それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
ちょっとこれは厳しすぎ、というか、若干誤解しているか?
(静的クラス機構による)動的型は型を失うわけではなく、一般的には「静的言語としてのメリットを失う」とはされない。
確かに間接呼び出しになる分だけ遅くはなるのだが、これを言うなら世の中のOOP言語は全部糞になる。
(動的言語の)動的型は毎回辞書引きが必要(map扱い)だから効率が悪いとされている。
Goのinterface{}はこれではない。

ちなみにGoのreflectionもC系とはちょっと感覚が違う。
jsonを吐くのにフィールド名が必要なら、普通はjsonモジュール内でreflectionするはずで、
それならpublic(先頭大文字)でなくとも全部取れるはずなんだよ。だからそれを期待してしまうわけ。
そして、あ、あれ?とれないの?みたいな事になる。
C的常識でGoを組んでると、この辺の予想外のところで引っかかる。いろいろ根本からして違うんだよ。
一方PHPだと、「下手糞がフレームワーク組みやがって」とは感じるけど、何でそうなるのかは分かるんだよ。
あっちはベースを共有してる感がある。
だから今の俺だとPHPの方がGoより生産性が高くなってしまうわけ。
しかしGo言語はC系言語出身者お断り仕様で計画通りなのだから、これはこれでいいんだよ。
0159デフォルトの名無しさん
垢版 |
2017/11/19(日) 16:10:38.42ID:uqF6CIR0
>>158
>> それ以外は動的な解決(interface{}を使う)しかなくなり、静的言語としてのメリットを失う。
>ちょっとこれは厳しすぎ、というか、若干誤解しているか?

単純にIDE連携が静的言語としてのメリットって話
つまりコード補完する時にDBのカラム名が候補に出る状態にできるのが静的言語のメリット。
内部的に型を持つとかそういう話じゃない。

> Go:構造体を書き、タグ付けスクリプトを作成し、go generate してタグを付け、正しくタグがついているか確認 ← やること多過ぎ
じゃなくて
Go:構造体を書き、go genereteを実行する
だけ。正しくタグがついているか確認は不要。ツールを信頼してるから。Cのプリプロセッサを信頼するのと同じ。
0162デフォルトの名無しさん
垢版 |
2017/12/08(金) 02:34:03.21ID:vRwW3yxJ
外部ライブラリで
import "github.com/hoge/foobar"
みたいにリポジトリ指定みたいに書いたりしますが
そのリポジトリが無くなったら終わりってことですか?

それと、forkした場合などはユーザ名変わるわけですがfork内のimport全部書き換えなきゃならんとか面倒ではないですか?
0164デフォルトの名無しさん
垢版 |
2017/12/08(金) 17:33:33.51ID:vRwW3yxJ
ありがとうございます
vendoring という機能を知りませんでした
vendoringで解決できそうです
0165デフォルトの名無しさん
垢版 |
2017/12/08(金) 21:10:32.89ID:TYM9B0mh
リポジトリあっても数年更新ないとかあるからな
go-bindataとか
0166デフォルトの名無しさん
垢版 |
2018/01/21(日) 17:08:27.78ID:N7P1nvHc
ふむ
0169デフォルトの名無しさん
垢版 |
2018/02/22(木) 17:15:17.70ID:zGB/N5H/
>>165
こういうのがあるとパッケージプロバイダを経由したほうが良いと思える。アカウントけされたらvendor使ってても無駄だよね
0171デフォルトの名無しさん
垢版 |
2018/02/25(日) 10:05:06.21ID:j2G6HVKr
ビルドしたバイナリにソースコードのパスが含まれちゃうんだけどこれを抑制する方法ってありますか?
0176デフォルトの名無しさん
垢版 |
2018/03/22(木) 15:24:45.26ID:674+Hr9W
APIサーバでマスタデータ的なものをグローバル変数として最初にDBから読み込んでおくのってアリな設計?

memcacheとか使うのはもう少し流動性のあるデータとか、サーバ間できちんと同期する必要のあるデータ扱う場合って認識でいる
0177デフォルトの名無しさん
垢版 |
2018/03/22(木) 15:27:09.34ID:o6o53GFc
>>176
あり
いつ更新するかは重要
0178デフォルトの名無しさん
垢版 |
2018/03/23(金) 04:54:04.26ID:2CHUAIka
初歩的な質問で恐縮なのですが、
Javaでいう所のSystem.out.print(i + " ");のような記述は、
Goではどのようにすればよいでしょうか?
fmt.Print(i + " ");とするとエラーになってしまうのですが…
0180178
垢版 |
2018/03/23(金) 16:41:04.93ID:2CHUAIka
>>179
分かりました。ありがとうございました。
0181176
垢版 |
2018/03/23(金) 18:24:39.93ID:QQ32nCj2
>>177
ありがとう!
0185デフォルトの名無しさん
垢版 |
2018/03/27(火) 08:30:30.17ID:iLpxT8od
intのabs無いんかい。
まぁ簡単に作れるからいいんだけど、、、なんで?
ジェネクリスができたら実装するんかな
0187デフォルトの名無しさん
垢版 |
2018/03/28(水) 03:52:49.62ID:ZDJEBTZY
https://golang.org/src/sort/sort.go

Goのクイックソートの実装を見ると内部でヒープソートとシェルソートをしているように見えるのですが
これはイントロソートの亜種なんですか?
0188デフォルトの名無しさん
垢版 |
2018/04/08(日) 22:26:49.15ID:JpRlbHG8
Google CodeJam 提出言語をGoのみにすればGoの普及がもっと加速したんじゃなかろうか
0189デフォルトの名無しさん
垢版 |
2018/04/08(日) 23:50:10.95ID:yrhx1H5B
go言語にc++17の [[nodiscard]]属性みたいなのないですかね?
0190デフォルトの名無しさん
垢版 |
2018/04/09(月) 23:26:18.67ID:MS0CVzIb
ほう、検査例外みたいな機構がC++に出来るのか
そりゃ楽しみだな
0191デフォルトの名無しさん
垢版 |
2018/04/10(火) 00:34:02.45ID:m2euEy9A
アンダースコアを使用禁止にしたら
0193デフォルトの名無しさん
垢版 |
2018/05/22(火) 10:19:05.51ID:yZwDcGoJ
func calc(x int, y int) (int,int){
return x, y
}

var a int
a, b := calc(1,2)

みたいに定義済みのaと未定義のbに戻り値代入したいときって、
a用の一時的な変数を用意しないと駄目よね?
なんだかんだ一年以上、疑問に思ったまま過ごしてる
0195デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:52:57.37ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

XC972
0196デフォルトの名無しさん
垢版 |
2018/05/24(木) 00:39:30.46ID:10PxTeir
RDBをRedisとかでキャッシュしつつ、更新もしてるサンプルない?
ラッパーの実装を参考にしたい
0198デフォルトの名無しさん
垢版 |
2018/06/19(火) 04:26:11.88ID:4RGawPIj
>>192
0199デフォルトの名無しさん
垢版 |
2018/07/02(月) 16:52:27.70ID:JP9Qw5xK
>> 193
https://play.golang.org/p/l3eB4W6F5Qc
こういうことね
そうするしかない。
「プログラミング言語Go」にも詳しく書いてあるよ。
0200デフォルトの名無しさん
垢版 |
2018/07/02(月) 16:53:38.24ID:JP9Qw5xK
>>193
みすった -> >>199
0202デフォルトの名無しさん
垢版 |
2018/07/04(水) 21:54:37.11ID:gFgZc5FG
WSB
0207デフォルトの名無しさん
垢版 |
2018/07/06(金) 15:20:50.78ID:odzQpd8G
何でこのスレ見てるんだ
0208デフォルトの名無しさん
垢版 |
2018/07/06(金) 17:12:54.17ID:qtqoxO2d
このゲームわ沼
https://goo.gl/VuXjSo
0210デフォルトの名無しさん
垢版 |
2018/07/06(金) 19:00:23.58ID:w06Qamjl
呼び方とかどうでもいいけど
当たり前だけどcapacityはメモリ持ってかれるから
チャンネルに飛んでくる数が不定な場合はstack使わないとgoroutine爆発する
ググるとまさにってのがstack overflowにあったけど緩衝するのが普通なの?
なんなんこれ
0212デフォルトの名無しさん
垢版 |
2018/07/07(土) 00:20:15.43ID:P+j3/coi
C言語に挫折してGoに来たけどやっぱダメでした
ポインタも残ってるし、むしろCより覚えることが増えて難しくなってないか
0214デフォルトの名無しさん
垢版 |
2018/07/07(土) 01:19:40.89ID:pkJeWJC3
自分でなんとかしてる
capacity小さくても止めとけと、耐えろよと思うわけよ
そのひと手間が普通ならなんだこれはと思うわけよ
Go言語のスレが未だにpart 2な理由よくがわかった
0215デフォルトの名無しさん
垢版 |
2018/07/07(土) 05:23:35.62ID:gtCUOnhz
スクリプト言語ばっか触っててGoに移行しようとして1月近く経ったけどシンプルなのは良いけど他だと標準で出来ることしようとしたら必要以上に複雑になるな
0217デフォルトの名無しさん
垢版 |
2018/07/07(土) 11:34:48.98ID:BLAzCd2J
Go自体が他の次世代言語とくらべて低機能にしてある
複雑な機能つけても使いこなせない人がいるから単純にしてあるのさ
それがGoの利点ともいえる
0221デフォルトの名無しさん
垢版 |
2018/07/16(月) 15:29:05.06ID:N67OeEDm
Goでは定数同士の演算はコンパイル時に行われるという認識で正しいですか?
0222デフォルトの名無しさん
垢版 |
2018/07/20(金) 20:05:59.76ID:79xYVhLD
Goに限らずCでも最適化オプションオフにしない限りコンパイル時に計算してくれるんじゃないかな
0223デフォルトの名無しさん
垢版 |
2018/07/22(日) 15:52:23.78ID:n3sj4i+0
cのunionとかpackされた構造体の扱いがめんどくさいな
せめて自動でsetter/getterを付けてくれたらいいのに
0224デフォルトの名無しさん
垢版 |
2018/07/22(日) 20:53:07.07ID:9sj55xoR
僕もただのデータの入れ物的な扱いしてました、何年くらい前だろうか15年くらいかなぁ
0225デフォルトの名無しさん
垢版 |
2018/07/30(月) 09:32:46.50ID:cinqYph1
Pyhtonの遅さに耐えられずGoを学び始めたんだけど
型の記述がしんどい
これが何を意味するのか読み解くのに土日を要した
func compute(fn func(float64, float64) float64) float64 {
0232デフォルトの名無しさん
垢版 |
2018/07/30(月) 13:06:10.85ID:OTf1bV4O
>>228
池沼に用は無い
0234デフォルトの名無しさん
垢版 |
2018/07/30(月) 18:38:58.64ID:8zt/8s1N
>>232
公式の解説にあったのよ。Cの型が読みにくいからGoはこうしたって。
ワイが池沼とか関係ない
0235デフォルトの名無しさん
垢版 |
2018/07/30(月) 20:45:55.35ID:cinqYph1
>>226
四つのfloat64、二つのfuncで混乱してしまった
後置はVBAで慣れているのだが、 as がないとまるで別物に見える
0237デフォルトの名無しさん
垢版 |
2018/07/31(火) 13:08:04.84ID:H1jTAdrX
スライスとかマップで普通に使いそうな関数を集めた定番のライブラリとかある?
0238デフォルトの名無しさん
垢版 |
2018/07/31(火) 19:07:29.37ID:xC1/ia91
>>235
cで関数を引数に取るようなのを見たら卒倒しそうだな。かなりわかりやすい方だと思うけど。単純に関数名や、引数名を取り除いただけだよね
0239デフォルトの名無しさん
垢版 |
2018/07/31(火) 22:54:51.46ID:UOVrWRI5
今日学んだこと
・IdをIDにしろって注意される
・ログがインターフェイスじゃない
0240デフォルトの名無しさん
垢版 |
2018/08/01(水) 01:31:31.58ID:i67K/6im
MongoDBのRESTインターフェイスを作って、windowsのサービス化まで出来た
これでブラウザのユーザースクリプトでデータ使いまくれて捗る
Goは始めたばかりだけどサクッと作れた。まったくすごい言語だわ
0241デフォルトの名無しさん
垢版 |
2018/08/01(水) 14:23:47.59ID:0CV2ApoM
現在の時刻が日付に関わらずある時間帯に含まれるかどうか判定したいです
time.Timeのbeforeやafterを使うと日付まで考慮されてしまうので
いちいち時刻だけをとりだして比較しているのですが、もっと簡潔な方法ってありますか?
0242デフォルトの名無しさん
垢版 |
2018/08/02(木) 10:41:38.06ID:GctkuD54
時刻取り出して比較する以上に簡単な方法なんて無いでしょ
そういう関数なりライブラリが欲しいってこと?、無駄な機能無いのが取り柄だし必要なら作れば良いのだが
流石にt.Hourの比較程度を言語で抽象化するのは畑が違うとしか
0244241
垢版 |
2018/08/02(木) 15:04:47.29ID:o5Ypf9MR
わかりました。ありがとうございます
0245デフォルトの名無しさん
垢版 |
2018/08/09(木) 11:32:00.96ID:b+ssGMS1
趣味で作ってるアプリのAPIサーバーをGoに置き換えてみようと思うんだけど、
フレームワークはやっぱりechoが鉄板だと思っていいの?
0250デフォルトの名無しさん
垢版 |
2018/08/10(金) 12:53:08.00ID:xghqpyUK
goaもginも知らなかったよ、ありがとう。
とりあえずAPIサーバー用途ならgoaが1番良さそうだからこれ使ってみる。

気が向いたらrailsで動かしてるサービスサイトもどれかに移行するかも。
0253デフォルトの名無しさん
垢版 |
2018/08/10(金) 19:13:59.84ID:JIBbU2kk
goaの肝はコード生成だから、結構素直なコードが生成される。
そのコード次第も勉強になる。
web apiの作法をむしろ教えてもらった。
0254デフォルトの名無しさん
垢版 |
2018/08/11(土) 03:51:00.34ID:0HQvSoaX
変数への代入に := を使うか = を使うかはどうやって判断するのだろう
例えば for i := 1 は普通に for i =1 ではダメなのか
■ このスレッドは過去ログ倉庫に格納されています

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