X



Go language part 1
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん垢版2013/10/10(木) 12:04:51.78
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。
0005デフォルトの名無しさん垢版2013/10/11(金) 03:38:07.23
go to the jukai
0006デフォルトの名無しさん垢版2013/10/11(金) 18:13:03.60
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0015デフォルトの名無しさん垢版2013/10/26(土) 12:02:28.85
未使用変数やインポートでコンパイルエラーになるのはビビる
ライブラリ周りが整ったら使ってみたいな
0017デフォルトの名無しさん垢版2013/10/26(土) 13:37:33.48
枯れてたり流行ってる言語ならスレも盛り上がるが
Goは新しいし情報があまり出回ってないっていうものあって
ブログとかSNSとかスライドとか発表会で発表したほうが名前が売れるから2ちゃんじゃ盛り上がらないだろうな
情報に精通してる人ならここも見てるはずなんだけどね
0018デフォルトの名無しさん垢版2013/10/26(土) 14:04:00.67
                                            糸冬
                                       ---------------
                                        制作・著作 NHK
0019デフォルトの名無しさん垢版2013/10/27(日) 00:14:36.66
例の10%の自由開発時間で作った成果物だから
あんまり積極的に開発継続しないんじゃないの?
0024デフォルトの名無しさん垢版2013/11/04(月) 17:48:37.72
パッと見、for文すらヘンテコな記号がいっぱいでてきてロクに読めない
もうちょっと分かりやすくしてくれよ

こんな感じで書ける様に
for a = 0 while a < 100 step a++ do {
...
}
foreach a in 0..100 do {
...
}
0027デフォルトの名無しさん垢版2013/11/09(土) 19:46:10.60
リフレクションって構造体メンバ関数自体を値として取ること出来んの?
[key] = func
って感じに使いたいんだけど
0031デフォルトの名無しさん垢版2013/11/10(日) 18:50:31.27
>>29
大規模開発だな。
言語仕様的に、別人が作ってしまって手が付けられないライブラリーでも
型がinterfaceに対応してないから、
委譲用のコード書かなきゃいけないとか、
ポインターに委譲するのに関数から同じ名前の関数に引き数を
渡す処理を書くとかしなくて済むようになってる。
0033デフォルトの名無しさん垢版2013/11/24(日) 15:44:05.14
GoSFML2のサンプルをwindowsでコンパイルしたのですが
黒い窓が出てきてしまいます
オプションか何かで消すことは出来ますか?
また、そのようなオプションが無い場合は、何か他の手段で消すことは出来ますか?
003433垢版2013/11/24(日) 16:10:52.86
自己解決しました

go build -ldflags "-H windowsgui"

で出来ました
0035デフォルトの名無しさん垢版2013/12/02(月) 10:47:43.38
Goのリファレンスドキュメントをネットのない環境でも参照できるよう、ローカルにダウンロードしておきたい。
でもGoのSDKに入っているドキュメントは、golang.orgに繋がることが前提のようだった。
リファレンスをローカルに落とす方法ってない?(wgetだとリンクが・・・)
0038デフォルトの名無しさん垢版2013/12/10(火) 11:52:24.39
main.go:5:2: cannot find package "http" in any of:

何これ?標準でhttpパッケージ有るし
GorootのPathも通してんだけど
0046デフォルトの名無しさん垢版2014/01/20(月) 06:13:09.40
go
http://unkar.org/r/tech/1257920595/ 2009年に華々しく初登場。3日で消化
Go part2
http://unkar.org/r/tech/1258183436/ まだまだ衰えず10日で消化
Go part3
http://unkar.org/r/tech/1259072043/ だいぶ落ち着いてきた3ヶ月で消化
Go part4
http://unkar.org/r/tech/1265620273/ ほぼ1年で消化。すっかり普通のスレに。
Go part5
http://unkar.org/r/tech/1327216227/ 17res。オワコン
Go 総合スレ
http://unkar.org/r/tech/1342535690 再建。しなかった。4resでアイちゃんフィニッシュ
Go の宿題片付けます
http://toro.2ch.net/test/read.cgi/tech/1257968644/ part1の頃立った残骸。

そして2013/10/10。何もなかったようにpart1で立て直す。
何も知らない情弱共が何も知らない顔で書き込み
結局即レスは回避したようだ。おめでとう。
0050デフォルトの名無しさん垢版2014/01/27(月) 13:00:41.91
今年入ってからちょっと触ってるけど、これ結構いい感じだと思う
これが一番って感じにはならないかもしれないけどいくつか修得するうちの一つとしては薦められるようにはなってほしい
0051デフォルトの名無しさん垢版2014/01/27(月) 13:15:20.02
パッケージ次第で凄い可能性があると思う
ここがプロの仕事で素人はインポートしてチョロ書きするだけで良い
0054デフォルトの名無しさん垢版2014/02/02(日) 04:01:00.42
syscallパッケージとかで得たfdがあるときに
第一引数にそれ、第二引数に保存先パスを渡して使うみたい
使ったことないけど
0057デフォルトの名無しさん垢版2014/02/07(金) 15:41:24.67
たまにループの中で変数宣言して使ってるのを見かけるのですが
ループの度に初期化されて処理速度に影響がないのだろうかと
測ってみると殆ど影響がないようです

ループ内だけで使う物ならば、スコープ的にも積極的に
ループ内で宣言した方が良いのでしょうか?
0059デフォルトの名無しさん垢版2014/02/07(金) 19:04:19.54
> ループの度に初期化されて処理速度に影響がないのだろうかと

決めつけず測定して確認したのは間違ってないけど、もうちょっとマクロに、
なんというかいちいち気にするまでもないムダをスルーする感覚を....
難しいかなぁ。
0060デフォルトの名無しさん垢版2014/02/07(金) 23:37:47.28
その感覚難しい

今もまたIF ElseとSwich Caseでどっちが速いのか気になってやっちゃうし
AppendのCapは指定しとく方が速いのか気になってやっちゃう
所詮素人が趣味で作ってるレベルなのでご容赦を
0061デフォルトの名無しさん垢版2014/02/14(金) 17:23:52.61
もうちょっと情報が欲しいな
基本的な事以外は全部手探りだから時間が掛かる

例えば、フィールドにスライスがある構造体で
構造体自体のスライスを作って増やしつつ
更にフィールドのスライスも増やす、とかさらっと書けない
試行錯誤で何とか出来たけど…
0063デフォルトの名無しさん垢版2014/02/15(土) 17:30:52.59
>>60
>AppendのCapは指定しとく方が速いのか

これ要素追加が1万程度(Append1万回)なら
Cap指定しない方が僅かに速いか殆ど変わらない
どういう理屈でそうなんのか分からんけど
0064デフォルトの名無しさん垢版2014/02/21(金) 12:13:52.04
>>63
キャッシュが効いてるだけ
事前に要素数が分かっていればCap指定しないと値のコピーが繰り返されるので遅い
0065デフォルトの名無しさん垢版2014/03/03(月) 11:19:34.46
BreakeがSwichに効くのやめて欲しいわ
折角省略出来るようにしたんだから書いても同じ動作になるなら意味無いでしょ
0067デフォルトの名無しさん垢版2014/03/27(木) 00:35:35.75ID:NajF0K82
初心者だけどstrings.Reader をio.Reader として渡せるって仕様としてどうなの
継承も何もしてないけどコンパイル時にチェックされてるの?
0069デフォルトの名無しさん垢版2014/03/27(木) 01:23:58.48ID:NajF0K82
string.Readerはio.Readerを継承してるの?
io.Readerの条件を満たしてるとは書いてると思ったけど
0070デフォルトの名無しさん垢版2014/03/27(木) 01:44:26.20ID:NajF0K82
突っかかってるようで悪かった
継承がない言語でダックタイピングできる、つまり条件を満たしてるとどうやって確信できるかわからなかったんだ
標準ライブラリを読んでるんだけど型アサーションしてないから不安になってるだけ
0071デフォルトの名無しさん垢版2014/03/27(木) 05:15:32.21ID:syLidNhE
ある型がインタフェースを実装してるかは規定されてるメソッドがあるかどうかだけで決まる
Javaみたいに明示しない
ちなみにインタフェースを実装してるかどうかはコンパイル時に解決される
strings.ReaderだったらRead(p []byte) (n int, err error)を持ってることからio.Readerを実装しているといえる

もし実装できてないのにそのインタフェースに代入しようとしたらコンパイルエラー出るから試してみて
これが非明示的なのはGoの目玉の一つだから公式のドキュメントなりどっかのブログなり読んでね
0074デフォルトの名無しさん垢版2014/04/21(月) 00:41:39.71ID:BvA2ph+v
Goの継承っぽい機能って日本語で何て呼ぶのが良いんだろ
埋込型って呼んでるけど伝わるんかな
0076デフォルトの名無しさん垢版2014/04/22(火) 00:56:19.23ID:V38u3ZKO
http://golang.org/ref/spec#Struct_types
>A field declared with a type but no explicit field name is an anonymous field, also called an embedded field or an embedding of the type in the struct.
0082デフォルトの名無しさん垢版2014/05/05(月) 23:06:49.70ID:YuCWT0mm
むしろ組込み向けのほうがダイナミックリンクは避けたくないか?
Goが組込みに向いてるかどうかは別として。
0085デフォルトの名無しさん垢版2014/05/23(金) 23:43:10.01ID:kqkMywsW
むしろdartじゃないか
0087デフォルトの名無しさん垢版2014/05/24(土) 13:58:01.94ID:35dvvibx
ファイルサイズが大きくなるのでこんなのが流行るのは困る
大手企業のプログラマーなら時間もあるし仕事で試しに導入するなんてことも余裕だけど
中小だとそんな余裕はない
0090デフォルトの名無しさん垢版2014/06/06(金) 22:59:44.76ID:a9mGSAin
C++は自分で一から書く文には問題ないけど、書き方が無茶苦茶な人から引き継いだ時が悲惨だった
そういうのがマシになりそうなコンパイラ言語だからこれ普及して欲しいんだけど、周りで扱ってる人ほとんどいないんだよなあ
0095デフォルトの名無しさん垢版2014/06/20(金) 22:23:23.60ID:QMkHcad5
windows環境でのGUIライブラリがもっと発展すれば普及もしそうなのにね
コンパイラ言語だし、仕様とかも結構気に入ってるからもっと頑張って欲しいんだけどなあ
0096デフォルトの名無しさん垢版2014/06/21(土) 00:05:57.28ID:UJNwDYla
windows環境ならWalk使えば良いんだけど、
リファレンスやチュートリアルが無いのが広まらない原因なのかなぁ。
サンプルは豊富なので機能は充分だと思うが。
0106デフォルトの名無しさん垢版2014/06/24(火) 22:05:30.11ID:3jg/jifd
Go界隈で日本語コミュニティ必要ないからな
みんな英語できるだろうし
0110デフォルトの名無しさん垢版2014/07/05(土) 14:32:15.90ID:pTDYhgjU
>>109 環境的には組み込みソフトと同じだよ。
Hello World が、1MB何て許せるわけが無い。
基本ライブラリは端末組み込みで持つだろうから、Androidが標準装備すればもう少し小さくなるだろうが、今度はOSがでかくなる。
0111デフォルトの名無しさん垢版2014/07/05(土) 14:41:39.27ID:t0Gvg/Rs
気持ちはわからなくもないけどねえ
16Gや32Gストレージなんて当たり前なところで、OSが多少増えてどうこうと言われてもさすがに
0112デフォルトの名無しさん垢版2014/07/05(土) 15:43:21.74ID:pTDYhgjU
>>111 全てのアプリが何倍かの大きさになったら困るだろ?一つの話じゃ無いんだよ。
間、そんな事には成らないだろうがどのくらい大きくなるか未知数、今判断には時期尚早。

基本的には論外な大きさは悪
0113デフォルトの名無しさん垢版2014/07/05(土) 16:47:01.80ID:oA33QTWa
Androidでいろいろ作ってて感じるのは
今や主メモリやストレージを埋めるのは映像や音声のデータだっていう現実
コードが占める割合はかなり少なくなってきてる
0114デフォルトの名無しさん垢版2014/07/05(土) 17:15:09.73ID:5LgT0AK3
Android じゃないけど、自分の Ubuntu Linux 14.04(Intel 32bit CPU版) で
PATH にある実行形式ファイル(ELF, Dynamically linked executable)を調べ
てみると、

ファイル数: 1822
合計サイズ: 356 MB

「Hello World!」を表示するだけのプログラムサイズは(両方ともstrip済)、

C言語: 5532 B
Go言語: 1065264 B

これで単純な外挿計算を行うと 67 GB にもなるけど、そこまで膨れ上がる
ことはないでしょうね。ただ、「shared object ってステキ!」って感じはするw
0117デフォルトの名無しさん垢版2014/07/05(土) 19:14:06.90ID:oA33QTWa
>>114
各実行ファイルにgo用のランタイムがくっつくと考えると
356[MB] + 1822×(1065264[B] - 5532[B]) = 2.2[GB]じゃね?
実際はもうちょっと増えると思うが
0120デフォルトの名無しさん垢版2014/07/05(土) 23:28:12.02ID:rxWIrUjL
容量減らすためだけにポータビリティ捨てたくはないかな。

Rob PikeらはPlan 9の論文で動的リンクの問題点をあげつらってたから、
たぶん今後も静的リンクから変えない気がするし。
0122デフォルトの名無しさん垢版2014/07/06(日) 08:10:08.75ID:CKDdGv5O
やっぱそうなるのか
HTMLで描画の性能が出せるようになってきたから
ネイティブウィンドウに拘る必要は少なくなったのかな
0128デフォルトの名無しさん垢版2014/07/09(水) 14:56:08.07ID:SDA1RKlK
goって存在価値あるのか? NaCl PNaCl で事足りるだろ。

言語を作りたいから作ったと言う自己満足だけでは?
これが有ると何が出来るようになったり,効率が良くなったりするのかな?
何がしたいの?

そういやDartも有るな。 あれはJavascriptの置き換えを狙ってるから目的がはっきりしてる。
0131デフォルトの名無しさん垢版2014/07/09(水) 22:41:26.96ID:8SChLIyJ
ファイルサイズが大きい言ってるから、hello worldの実行形式をreadelfしたら使ってなさそうなシンボルがうじゃうじゃいたけど、まだいろいろ工事中なのかい?
0132デフォルトの名無しさん垢版2014/07/16(水) 21:08:08.10ID:YrYvz6dv
実行ファイルのサイズ見るだけで期待の新言語感が綺麗さっぱり消滅するよな
静的リンクだからで許されるサイズじゃねーだろ。

Goとは関係ないけど、JS界隈なんぞもたかだか数百数千行のJSをビルドするために
何十MBものnode_modules作るとか意味わからんし。言語のメリット投げ捨てとるわ

提言としては、今どきのプログラマ容量の感覚がおかしいので全員8ビット時代からやり直すべき
あるいは4Kとか64Kのメガデモでも作るとかな
0133デフォルトの名無しさん垢版2014/07/16(水) 21:10:00.51ID:ue0KWKB4
>>132
さっさと去れよ
0134デフォルトの名無しさん垢版2014/07/16(水) 21:10:33.17ID:YrYvz6dv
GoほどじゃないがRustもでかい。システムプログラミング言語としてやる気あるんかお前ら
C言語当分安泰だわ。
0135デフォルトの名無しさん垢版2014/07/16(水) 21:26:57.08ID:18iWZycG
>>132
node.jsにモジュール上げたときも外人もクレクレ厨ばっかりだったな

firefox は勝手にメモリ使いまくって
2GB以上になったとたん固まって落ちるし
0136デフォルトの名無しさん垢版2014/07/16(水) 21:33:51.50ID:YrYvz6dv
>>133に去れとか言われたのでもう少し粘着するよ。

ここに去年の12月のエントリがあるんだがな。
「Goのバイナリサイズは膨らみ続け、制御不能になりつつある」

Go Binary Sizes Are Growing out of Control ? Donat Studios
https://donatstudios.com/Golang-Binary-Sizes

追記がうける。これはGoが糞だとかそういう趣旨じゃない。私はGoを愛しているw
Redditでほのめかされてるように開発者が怠惰で無能と言っているわけじゃない云々w

言語の問題を指摘するためにこういう弁明をしなければならないこと自体糞だが、
恐ろしいのは、このrant以後も、バイナリサイズがさらに膨れ上がっていることだ。
設計上、思想上の欠陥があると見なすべきで
こういう明らかな問題点を見て見ぬふりする言語コミュニティに期待するかどうか。


俺はしないね。


フロッピー1枚に入らないHello Worldって何だよ。いやマジに。
0140デフォルトの名無しさん垢版2014/07/17(木) 07:10:02.53ID:/y/RnBj0
>>136

最近使ってるpecoのファイルサイズ見たら4.1MBだった。ちょっとしたツール系でこのサイズは・・・とか思ったけど、今どきメモリは4GB,8GBくらいあたりまえに載ってる時代だし、もう許すことにした

組み込みでは使えないってことだね
0141デフォルトの名無しさん垢版2014/07/17(木) 08:38:37.24ID:Emdyn2Mx
わかってるわかってないの水掛けこそ、上っ面の駄レスだろ
おかしいところを具体的に突いてやれば、言い返せないしこのスレの質向上にもなる
0144デフォルトの名無しさん垢版2014/07/17(木) 12:27:33.98ID:q6z1PJAH
>>140 大きいと言う事は全てにおいて時間がかかると言う事なんだぞ。 つまりあらゆる面で生産性が低くなる。
そんな言語誰が使う。

作ってる奴がヘタレだとか基本設計自体に問題が有るとかさんざん言われてる。
0147デフォルトの名無しさん垢版2014/07/17(木) 16:46:46.06ID:MN+A29Er
Go は使う側にとって何かメリットをもたらすのか?

メリットが見えずにデメリットばかりが目立つ。
作る目的がはっきりしてい無いから何年経っても出来上がらないんだよ。

Swiftと大違い。あっちは公開前からブレークしてる。
沢山のメリットが誰の目から見ても明らかにわかるからだよ。

Go の公式REPLは有るんだっけ?
0150デフォルトの名無しさん垢版2014/07/17(木) 19:58:44.51ID:O9NXfjPR
 ―┼‐         ノ     /   |  --ヒ_/     /   \ヽヽ    ー―''7
   `」   ┼,   二Z二   レ   /  /´レ' \ ―7 ̄}  |  ー-、   /
 (__  (|フ)   (__ノ  _ノ  ∨`  ノ  /  /     _ノ    \_

    ─┼-        /   |   ‐┼-   |     ー|―
    ─┼─ |   \ レ  /   ̄Tー  /      ノ -─
   (二フヽ  \/    _ノ   (二フ\  ヽ_ノ   / 、__

     i';i
    /__Y
     ||真||                   /⌒彡
  _ ||露||         /⌒\     /冫、 ) ・・・・・・。
  \ ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄\ `./⌒ i `  /ゝ    _,,..,,,,_
  ||\`~~´  (十万石)     \( >     ('\\  ./ ,' 3 `ヽーっ ・・・・・・。
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄\`つ    ⌒ _) l   ⊃ ⌒_つ
     .|| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||                `'ー---‐
( 'A) ・・・。 〃∩ ∧_∧        <⌒/ヽ___
/(ヘ)ヘ    ⊂⌒(  ・ω・) ・・・。  <_/____/ zzzz・・・
         `ヽ_っ⌒/⌒c
0153デフォルトの名無しさん垢版2014/07/18(金) 08:06:18.24ID:KrkzFLu9
最近のGoogleは自分で自分の首を絞め始めてる様に見えるな。
会社として収集がつかなくなってしまった感じ。
0154デフォルトの名無しさん垢版2014/07/18(金) 09:03:19.13ID:JbZ7Qo5I
いや昔からこのノリだけど
小さなグループ毎に好き勝手やってる感じ
むしろ最近は昔よりまとめようとしてる
0155デフォルトの名無しさん垢版2014/07/18(金) 12:50:52.86ID:DOB4ifCF
NaCl PNaCl > 速いスピード
Dart > Javascript の置き換え

Noop > Java VMで動く新言語、Oracleとの喧嘩用?

Go > 目的不明(サーバアプリ?)

上二つは上手くやれば美味しいものも見えるし、業界の方向性にもあっている。

Noopは保険みたいなものだろう。ユーザにとっては迷惑なだけ。

Go は美味しそうな匂いがし無い。 並列処理?他の言語より美味しいか?
0159デフォルトの名無しさん垢版2014/07/18(金) 14:57:25.22ID:cGkLMo0w
hello worldが大きくてもそれの数百倍の大きさのプログラムをコンパイルしたら
数百倍の大きさの実行ファイルが出来るわけでは無いだろ
0161デフォルトの名無しさん垢版2014/07/18(金) 22:10:34.84ID:DOB4ifCF
>>156 ユーザにとって美味しい餌が無いと言語も流行らないんだよ。

なんで三項演算子( ? : ) すら作らないんだろう。文法に無駄が多い。

// 入力値iが正の整数の場合iの2乗が、iが0以下の整数の場合0が返されるfunction

// Go
func Fx(i int) (ret int) {
if i > 0 { ret = i*i } else { ret = 0 }
return;
}

// Swift 三項演算子
func fx( i: Int ) -> Int { return i > 0 ? i*i : 0 }

// Swift 三項演算子を使わない場合。
func fx( i: Int ) -> Int {
if i > 0 { return i*i } else { return 0 }
}
0162デフォルトの名無しさん垢版2014/07/18(金) 22:51:20.66ID:hMlFBsak
流行らなかったら何百(何千?)とあるプログラミング言語の一つが静かに
消えていくだけ。しかし三項演算子が美味しい餌ってのはワケが判らんなw

どうしても欲しかったらこんなのでもいいんじゃない

type Any interface{}

func T(exp bool, a Any, b Any) Any {
 if exp {
  return a
 }
 return b
}

もちろん、これは三項演算子モドキにもなっていないけど。
本物の三項演算子が必要なら src/cmd/gc/lex.c に追加する
なりしてもいいし
0163デフォルトの名無しさん垢版2014/07/18(金) 22:51:30.47ID:Mqs0/spS
3項演算子はレガシーコードだな
うんこが現れたと言うことはGoも注目されてるのか?
0164デフォルトの名無しさん垢版2014/07/19(土) 05:03:22.62ID:SmxhOcgK
goのほうが言語仕様的には美しくて無駄が少ないと思うけど

型についてレシーバ(メソッド)が付けられるからClassを削って構造体のみにしたって所とか、関数は複数の値を返せるから通常のtry-catchみたいな例外文法削ったりとか、intefaceの実装の自動化によるduck typingっぽい感じとか

SwiftはなんかまだObjective-Cのラッパーて感じ。
引数のラベル付とか。selectorが使える所とか。
0167デフォルトの名無しさん垢版2014/07/19(土) 13:50:20.51ID:1hzYIwWV
>>164
>例外
例外文法削ったのではなく、例外自体削ったんだろ。パフォーマンス出すためにな
例外機構が必要な言語もある。

duck typingはSwiftの設計方針に合わない。goのinterfaceは面白いけど

>引数のラベル付き
これは他言語にもあるぞ。Rubyとか
引数後少なかったり、関数名から引数が明白な場合を除いてキーワード引数はわかりやすくて良いよ。

なんつーか、SwiftよりGoのが良いって前提で話してるよな。
どっちも良い所あるんだから、優劣付けずに話せばいいのに。
0169デフォルトの名無しさん垢版2014/07/19(土) 14:19:18.94ID:9ljzGYTI
>>164 例外を削除も、複数戻り値もSwiftは採用してるよ。

言語毎に色んな特徴は有るだろうけど、使用者にどんなメリットが有るかが一番大事だろうな。
どんなターゲットを対象にしているかとか。
0171デフォルトの名無しさん垢版2014/07/19(土) 15:06:03.17ID:9uryi8HE
>>169
そうそう、だから自分がいいと思う言語を使えばいいだけ、なのに、すごい低レベルなところで煽るやつは何を考えているのかと思う、が、いちいち相手にするレベルに至っていないのでスルーしとく
0179デフォルトの名無しさん垢版2014/07/21(月) 21:54:45.83ID:Syim72mM
>>178
ググれば出るだろボケナス
0182デフォルトの名無しさん垢版2014/07/21(月) 22:34:55.66ID:DpfIQ25M
iota の先頭文字は i で母音だから
不定冠詞を付けるときは
a じゃなくて an を付ける必要がある
つまり an iota としなければならない
0184デフォルトの名無しさん垢版2014/07/22(火) 00:52:49.93ID:Tqhjijck
>>181
APLのindex generatorよくわからんが、そんなところから来ていたのか〜
atoi, itoa系だとばかり思ってたわw
ありがとね
0186デフォルトの名無しさん垢版2014/07/22(火) 09:46:04.54ID:CpNP7/Sp
20行程度で2MB行くとかクソだな
200行で2GB使うのか?
ばかだろw
これじゃVPSでもクラウドでもすぐ容量いっぱいで使い物にならねえよ
0188デフォルトの名無しさん垢版2014/07/22(火) 09:51:44.86ID:gLVnM0Vt
printfもでかいけどprintfを100回呼んでも100倍のサイズにはならない
判り易く喩えるとこういうことです
0191デフォルトの名無しさん垢版2014/07/22(火) 10:27:27.42ID:yyU5/kBu
1500行のプログラムで3MBくらいだな
1万行で何書くのか知らんけど、似たような呼び出しだと仮定すると
3MBくらいか
0195デフォルトの名無しさん垢版2014/07/22(火) 20:32:55.34ID:r3GUCDVw
自分で書いたコード400行、標準ライブラリ10個、外部ライブラリ4個で4MBぐらいだったわ
0200デフォルトの名無しさん垢版2014/07/23(水) 12:38:54.74ID:WJZjj5QG
golang.jpみたいに一人でも全部翻訳はできてるのに
golang-jp.org全然翻訳進まんな
名前ばかりの幽霊部員しかいないのか
0202デフォルトの名無しさん垢版2014/07/23(水) 22:03:23.63ID:VI4LJie1
ろくに翻訳活動もしてないのに肩書きとして「golang-ja.orgで翻訳活動をしております」って名乗るのはいかがなものかな
0203デフォルトの名無しさん垢版2014/07/23(水) 23:42:01.46ID:VI4LJie1
goは簡単なバッチ処理をするようなプログラムを作るのには向いてないね
ビルド後のファイルサイズが気になる
0204デフォルトの名無しさん垢版2014/07/24(木) 00:30:01.41ID:znT0d1Bl
たしかに気にはなるけど
採用されない理由がそれだけのプロジェクトも想像できない
0205デフォルトの名無しさん垢版2014/07/24(木) 11:10:30.02ID:Ye3LEDYl
>>203
むしろバッチ処理得意じゃないかと思うんだが。
APIを何万回も叩いて結果をDBに格納するみたいなバッチ処理を書いた時に
チャネルを使うと素晴らしく綺麗に並列化できて感動したんだよね。
0206デフォルトの名無しさん垢版2014/07/24(木) 11:45:59.80ID:lbRXz+ac
>>205
>>203が言ってるのはバッチ処理というより単機能の小さいコマンドみたいなもののことでしょ。
自分らが~/binにたくさんおいてあるbashスクリプトレベルの。

そもそもこのコンパイラは常駐アプリケーションを作るための設計すぎて、実行時間がある程度長くないと無駄なのは事実。
とは言えいい言語だからそういうシンプルな機能を作るためにも使いたい。
使い終わったらプロセスごと落としてくれればいいからGCとかいらないし。
0209デフォルトの名無しさん垢版2014/07/24(木) 16:17:04.74ID:GSXF8hON
golang.jp を見て見たが、ちょっと最初の構想から外れてるみたいな気がする。
インタプリタみたいな軽量な言語を目指したと言うが、REPLすらないってどう言う事?
サードパーティの物をちらっと見た覚えは有るが、最近目立たないな。

REPLがあれば取り敢えず簡単なスクリプト処理的な物はこなせるけど、いちいちコンパイルGOじゃ面倒臭い。

ジェネリックもいずれ入れると言ってるがもう何年も経つのに入らないってどう言うこと? 設計上無理が有るのでは?
今は色んな面で言語的にはかなり低級に思える。
0214デフォルトの名無しさん垢版2014/07/24(木) 16:39:29.49ID:r6QGED5m
え?インタプリタはコンパイルしないと思ってるの?phpもrubyもpythonもコンパイルするんだよ?
0215デフォルトの名無しさん垢版2014/07/24(木) 16:44:21.40ID:GSXF8hON
>>214 広い意味でのインタプリタはそうだけど、そんな事言ったらJavaですらインタプリタと言い出すだろ。

本来の意味のインタプリタは、1行書いたら即実行が本来だよ。
コンパイルしようがどうしようが良いが、書いたら実行。これがインタプリタ。

perlなんかよりREPLの方がよほどまし。
0216デフォルトの名無しさん垢版2014/07/24(木) 16:46:57.30ID:GSXF8hON
>>214 それに>>212 は全くのコンパイルじゃ無いか。
どこにインタプリタ的な要素が匂うんだ?


例えば、100行位のプログラムを書き始めたとして、>>212はいつ実行出来るんだ?
アホなこと言うな。
0218デフォルトの名無しさん垢版2014/07/24(木) 17:50:00.05ID:9dmhGPAk
定義的にインタプリタであるかどうかにこだわる意味がわからん。
コンパイルが十分に速くてエディタの支援があれば事実上同じ。
0219デフォルトの名無しさん垢版2014/07/24(木) 17:59:05.81ID:GSXF8hON
>>218 解らんかな? 例えばインタプリタなら
>>218 と会話的にプログラム出来る。

コンパイル方式だと、>>218の発言を知ってから全ての218の行動を予測しながらプログラムを書かざるを得無い。 どれだけ膨大なプログラムになるかわかるか?

例えば今日台湾の航空機墜落事故のニュースを知ってから、それに関連したプログラムをするのと、
全く知らずに何年も前から予測してプログラムするのでどれだけ大きな差が有るのか解らんかな?
0220デフォルトの名無しさん垢版2014/07/24(木) 18:05:42.50ID:GSXF8hON
>>218 ま、いいや、golangで1行ずつコンパイルして結果が見えるのならそれで良い。

#今いるディレクトリは?
--gogo
#ls
--
#cd xxx
0223デフォルトの名無しさん垢版2014/07/24(木) 18:17:36.20ID:FJ9KFXdp
そもそもgoはc++の置き換えを狙ったガッツリコンパイル言語目指してたと思うが
インタプリタの話はどっから出てきたのだろうか。
0224デフォルトの名無しさん垢版2014/07/24(木) 18:18:07.34ID:hD2YGPYI
読込み -> 中間式生成 -> 実行 -> 結果表示
こういう流れなら中間式がなんであれインタプリタでよくないか
0225デフォルトの名無しさん垢版2014/07/24(木) 19:31:52.41ID:j9Fzrf/Q
対話式の環境が使いたいならscalaでも使えばいいんじゃねえの?
コンパイルくっそ遅いけど
0226デフォルトの名無しさん垢版2014/07/24(木) 19:35:29.67ID:eQap2LAf
ClojureとかGroovyとかもJVM系の言語はコンパイルしてから実行するのに凄い時間がかかるな
REPL的な環境使うと捗る
0227デフォルトの名無しさん垢版2014/07/24(木) 21:13:03.11ID:3xYKvkhO
>>223
http://golang.jp/go_faq
新しく言語を作った理由は?

Go言語は、インタプリタ言語のプログラミングの容易さと、動的型言語の効率、コンパイル言語の静的な型の安全性を併せ持つことを目指しました。
0228デフォルトの名無しさん垢版2014/07/24(木) 22:11:05.80ID:3xYKvkhO
>>224 Javaは含めたく無いな。 インタプリタは、基本的にソースコードをそのまま配布する物。
配布されたソースを変更すれば即座に実行出来る物。
0229デフォルトの名無しさん垢版2014/07/24(木) 22:34:04.45ID:xmULRajC
>>219
REPLが備わってる言語だと
1行ずつ試しながらプログラムを書けるのが良いっていう主張なんかな
コンパイル方式だと、ある程度まとまった量を書くまで
プログラムの挙動の確認ができないからダメだと

ちょっと興味あるから良かったらもう少し分かりやすく説明してほしいんだが
0230デフォルトの名無しさん垢版2014/07/24(木) 23:08:29.15ID:ZKlJlp/g
つまり軽い気持ちでインタプリタという言葉を使ってしまったら
インタプリタに思い入れの有りすぎる人が騒ぎだしたって話か。
0231デフォルトの名無しさん垢版2014/07/24(木) 23:30:45.74ID:3xYKvkhO
>>229
例えば、
system("ls")
でカレントディレクトリ内のファイルを見て、ファイルが有るのを確認してファイルを読み込むとか。
周りの環境が不確かでも確認しながらコーディングを進めて行くことが出来る。

試行錯誤が入る様な場合には力を発揮する。

パラメータを変えながらのテストプログラムとか。

とは言っても、一般的にREPLが力を発揮するのはコーディング時に結果を確認しながら進めていけることだろうな。 バグの少ないプログラムが書ける。

例 Java REPL
http://calms.hatenablog.com/entry/2014/03/20/215529
0232デフォルトの名無しさん垢版2014/07/24(木) 23:38:19.65ID:ZKlJlp/g
>>231
お前の言いたいことはよくわかったが残念ながらgoは最初の最初からc++後継のガッツリコンパイル言語だ。
REPLなんて全く意識してない。

そこに書いてあるインタプリタがうんたらかんたらはPythonの手軽さり入れてますよくらいの意味だ。
0233デフォルトの名無しさん垢版2014/07/25(金) 00:07:36.47ID:VLfrDabm
>>232 C++ ですら、CINTや、LLVM でのREPLが有るのに、なんでやらないんだろう?
言語と同等に重要だと思うけどな。

その前にジェネリックとかやることが山積みで残ってるからかもしれ無いが。
0236デフォルトの名無しさん垢版2014/07/25(金) 00:49:56.70ID:5ZIqGgab
>>231
>>229だけどありがとう
REPLはいろいろ試せて便利ということですね
コンパイル方式の言語でもREPLがあれば便利だという意見に納得
0237デフォルトの名無しさん垢版2014/07/25(金) 00:55:19.24ID:5ZIqGgab
>>231
>とは言っても、一般的にREPLが力を発揮するのはコーディング時に結果を確認しながら進めていけることだろうな。 バグの少ないプログラムが書ける。

これに関してはIDEでも出来るからREPLの利点になるかは微妙に思うけど
0238デフォルトの名無しさん垢版2014/07/25(金) 01:24:46.41ID:WAyDBvXq
そういう事出来るIDEってそんな多くないような
IDEの機能でREPLに近いのはイミディエイトウィンドウとSmalltalkくらいしか思い浮かばない
0243デフォルトの名無しさん垢版2014/07/26(土) 01:12:14.54ID:gxb4YorG
func a() string {
return "aaa"
}
これをstringかintを返したい場合どういうふうにfunc a() stringの部分を書きなおせばいいのか教えてください
0246デフォルトの名無しさん垢版2014/07/27(日) 08:52:04.39ID:CwX5MDAY
LLVM Clangは、徹底的にループを排除するからな
元のコードがどんなだか知らんけど
他がやってるループをClangは回してない場合がある
0247デフォルトの名無しさん垢版2014/07/27(日) 09:13:55.62ID:KUNHptBx
>>246 中にソースが書いて有るよ。
1GBのランダムなデータを3種類の読み方で読んで、00のバイト数をカウントすると言う物。
ループを省略するなんてことは出来なさそう。
0248デフォルトの名無しさん垢版2014/07/27(日) 09:46:07.39ID:PFdtsvV+
元のコードのここの部分が
for (i=0; i<fsize; i++) {
if (buf[i] == 0x00) cnt++;
}

例えばこんな感じに書いたみたいに展開されるってことじゃないの?
for (i=0,size=fsize/2; i<size;) {
if (buf[i++] == 0x00) cnt++;
if (buf[i++] == 0x00) cnt++;
}
if (fsize%2==1) {
if (buf[i++] == 0x00) cnt++;
}
0255デフォルトの名無しさん垢版2014/07/30(水) 09:20:20.31ID:Nn5HlRg1
Rustはまだ実験段階だから仕方ない。 金が無いとなかなか進まないね。

Dはスポンサー次第だろ。 Facebookが使った。
http://blog.fenrir-inc.com/jp/2014/07/about-d-language.html
トレンド的な話ではウォルター氏を含むD言語プログラマーが Facebook に雇用されてD言語の開発とD言語製アプリケーションに携わっている状態で、
D言語公式カンファレンスの DConf も Facebook 本社を会場として去年から開催されています。

SUNはDTrace として使ってるし、DTraceはAppleでも使ってる。
0257デフォルトの名無しさん垢版2014/07/30(水) 09:58:39.78ID:oJuXMjZX
D言語のドキュメントは読みにくいから挫折してGo北野に俺が勉強したくなるような余計ななことかくな!
0258デフォルトの名無しさん垢版2014/07/30(水) 11:40:53.67ID:hbolUbaM
分かりやすい綺麗なコードが書ければプログラム言語なんて何でも良い
ただ、同じ事やるのに色々な表現方法が存在して構文を複雑にしたり
波括弧の位置だの鬱陶しい問題が存在しない方が良い

表現の違いで吐き出したバイナリコードに差が出る言語は
一々最速かつ最良の方法を模索するハメになるので煩わしい
0263デフォルトの名無しさん垢版2014/07/30(水) 18:58:50.92ID:oDHaBQlk
英語読めないからあれだけど
WindowsだとOSのDLL読めるけど
ユーザーが作ったDLLは使えないんだって?
ならGoでグラフィックをやりたければOpenGLよりDirectXのが楽ということか

WinのOpenglは外部DLLないと古臭いから
0264デフォルトの名無しさん垢版2014/07/30(水) 21:19:57.41ID:/fpjt/6K
>>255
Facebookってオープンソースに力入れてたっけ?単に自社の便宜のためにDの開発者を取り込んだだけ、ということではなくて?
0268デフォルトの名無しさん垢版2014/08/04(月) 14:37:29.28ID:HA1hOxHF
func hoge(x, y int) (x, y int) {
return
}
これはダメで

func hoge(x, y int) (int, int){
return x, y
}
これがいい理由がわからない
0271デフォルトの名無しさん垢版2014/08/04(月) 14:59:51.43ID:NkDV0lbD
> func hoge(x, y int) (x, y int) {
> ...
> }

これ、

./main.go:7: duplicate argument x
./main.go:7: duplicate argument y

ってなる(Go 1.3)
0272デフォルトの名無しさん垢版2014/08/04(月) 15:04:04.54ID:OYo/E/zd
馬鹿かこいつ
0274デフォルトの名無しさん垢版2014/08/04(月) 15:25:59.54ID:HA1hOxHF
>>273
戻り値が初期化されるからダメってことなんですね
Named resultは便利なようで冗長的になる可能性もあるってわけですね
メモリも食いそうですね
ありがとうございました
0276デフォルトの名無しさん垢版2014/08/04(月) 15:48:57.70ID:hivp8MqX
>>274
詳しい人の意見を少し待ったほうがいいんじゃないの?
ダメな理由は素人でも特定できたけど
なんらかのやり方があるかもしれないよ?
0278デフォルトの名無しさん垢版2014/08/05(火) 17:39:44.90ID:DgDBu3xR
go は全く知らないんだけど、皆の話を聞いてたら、入力の変数名x,yと出力の変数名x,yは別物みたいだね。
つまり同じ名前をつけるバカとは付き合えんと言われてるの?

inout属性をつけられると良いんだけどね。
0279276垢版2014/08/05(火) 17:59:47.02ID:dd7FVYvi
>>277
いえ、違います。
てか仕様そのものじゃないか。

>>278
いえ違います。
別物ではないから
重複定義でエラーになるんでしょ。

func (x int) (x int) なら
現状だとpseudoで
int x = 0
int x = args["x"]

その内
func () (x=123 int)
などで0以外の初期化子与えたり
func (x int) (x=args["x"] int)
func (x int) (x=args.x int)
func (x int) (x=_x int)
などで引数で初期化とか出来るようになるんじゃないかな
というか既にあるんじゃないのかな
0280デフォルトの名無しさん垢版2014/08/05(火) 18:07:02.09ID:DgDBu3xR
>>279 変数名in x,y で、out x,yにしたかったんだろ。
でも言語仕様上 in x,y とout x,yのx,yを同じ変数に割り当てられないからエラーになるんだろ。
つまりinと、outは別の変数を使えとしかられてるんじゃ無いの?

言語によってはinout属性を付けると、入力変数に値をセット出来て出力とすることが出来る。
0284デフォルトの名無しさん垢版2014/08/05(火) 21:25:46.03ID:3MsCZ4lI
goでguiが作れない
guiライブラリのコミュニティーがない
あっても個人が作ったライブラリがあるだけ
goでguiに未来はない
0288デフォルトの名無しさん垢版2014/08/05(火) 22:56:03.53ID:q3/M2RFT
もうGoogleは、Android にも言語にも飽きたんだよ。オタクの趣味としてちんたら遊ばせておくつもりだろ。

はた迷惑だよな。
ロボット企業を買いあさってる。日本のSCHAFTも買収された。
0289デフォルトの名無しさん垢版2014/08/05(火) 23:31:09.30ID:AfbB56Nf
ニュース速報。Goが死亡したことについてGoogleは謝罪会見を行わ
ないとのことです。Goのユーザーからは怒りの声が上がっています。
以上、中継でした。
0290デフォルトの名無しさん垢版2014/08/06(水) 00:15:13.55ID:q1msYZkC
叩きたくて叩きたくてしょうがない奴が2chというゴキブリホイホイにあつまってくる
お陰でネットが平和にはなるけど
0291デフォルトの名無しさん垢版2014/08/06(水) 00:15:15.26ID:cxEAgXtb
Goは、システムプログラミング寄りのことをしない人には関係ないし、GAE使わない人にも関係ない。
WebAPIに使おうという人は増えてはいるけどね。
0292デフォルトの名無しさん垢版2014/08/06(水) 01:31:04.59ID:jlHxWIwY
まだ実験的に使ってる位だろ。 本格的に使えるレベルじゃ無いだろ。
WebAPIだと下手するとJAVAにすら負けるんじゃ無いのか?
0296デフォルトの名無しさん垢版2014/08/06(水) 08:38:43.95ID:OufmJGiK
この前買ったAsusのM/Bに付いてるユーティリティのセットアップ部分がGo+Walk?で書かれてた
Dos窓の消し方知らん状態で、よく配布出来たなと思うけど
0298デフォルトの名無しさん垢版2014/08/06(水) 09:30:56.39ID:cxEAgXtb
cloudflareがオープンソースしてるCDNまわりの運用ツールやperconaのMySQLまわりの運用ツールもそうだったか。
まあ、google社内の運用ツール作成者が、cやpythonの代わりにgo使ってるようだが。
0299デフォルトの名無しさん垢版2014/08/06(水) 10:06:37.78ID:Ew8yVxs4
1.3からNaClもサポートされたよね。
実際使えるようになるのは1.4からだろうけどWebClient側もGoで書くようになるか。
問題はchromeでしか動かないってことだけど
0300デフォルトの名無しさん垢版2014/08/06(水) 10:49:43.03ID:1n+ZEBWM
NaClはサンドボックス用の実装
1.4はarm NaCl
内容分からず書き込むなよボケナス
Web Client向けじゃねーよクソカス
0301デフォルトの名無しさん垢版2014/08/06(水) 13:24:50.02ID:zhx39L6I
>>300
どっちかいうとPPAPIを1.3でサポートしてないから、サポートする1.4から本格的に使えるって意味ね。

ビジネスロジックをクライアント側で実装するとなるとjsでは丸見えになるから
NaClでクライアントの一部でも実装できるというのはありな気がするんだけど。
ブラウザをchrome固定にしても構わない社内システムとかね。
0302デフォルトの名無しさん垢版2014/08/06(水) 13:40:49.32ID:1n+ZEBWM
https://code.google.com/p/go-wiki/wiki/NativeClient
They cannot be run directly in Google Chrome. As such, the NaCl support in Go 1.3 is useful only for running sandboxed environments like the Go Playground.

上記を読めない文盲か?

PPAPIが1.4でサポートされるというソースを出したら全力で謝ろう
0303デフォルトの名無しさん垢版2014/08/06(水) 15:57:32.29ID:/I6P1gIg
go-wiki
There is ongoing work exploring support for the IRT and PPAPI (3 and 4 in the list) but no definite release target. Perhaps they will be in Go 1.4 but perhaps not.

perhaps not
^^^^^^^^^^
0308デフォルトの名無しさん垢版2014/08/10(日) 07:28:42.80ID:717mLNhK
いや、悲惨なのはどう見ても右肩下がりなHSPだろ
ゲームを付けないと、クロアチア権利党の略語としてヒットするからだめ
ゲーム以外の追加キーワードは、軒並み更に検索件数が少な過ぎる
0309デフォルトの名無しさん垢版2014/08/10(日) 09:10:02.35ID:owNP0mOn
いやって何がいやなんだ?
「更に」と書いてるんだからどちらにせよHSPが悲惨だと言ってるに決まってるだろ
0313デフォルトの名無しさん垢版2014/08/10(日) 18:16:52.00ID:owxd9++q
ただ匿名フィールドやメソッドでしっくりこない部分がいくつか

type foo struct {}
func (f foo) foobar() {}
func (f *foo) pfoobar() {}

type bar struct {
foo
}

これらのメソッドを

bar.foobar(bar)
で呼び出せたり
var nilptr *foo; foo.pfoobar() // 空なのに…
で呼び出せたりするのがなんか気持ち悪い
0314デフォルトの名無しさん垢版2014/08/10(日) 18:36:30.54ID:8jOhhL8e
>>313 バグじゃ無いの? 確かに気持ち悪いし理解できない。
何で
barやfooのメソッドになるんだ?

お手伝いさん雇ったらいつの間にか家ごと乗っ取られてたと言う感じ。
0315デフォルトの名無しさん垢版2014/08/10(日) 18:53:42.45ID:owxd9++q
>>314
ひとつめはメソッド式っていう型から直接メソッドを取り出せるリファレンスに載ってる仕様
ふたつめはfoo.pfoobar()→nilptr.pfoobar()の間違いだすまん
0316デフォルトの名無しさん垢版2014/08/10(日) 19:17:22.63ID:owxd9++q
>>313
一つ目の引数に型入れてしまってる
コードそのまま張る
スレ汚し申し訳ない

package main

type foo struct {}
func (f foo) foobar() {}
func (f *foo) pfoobar() {}

type bar struct {
foo
}

func main() {
b := bar{}
bar.foobar(b)

var nilptr *foo // 空なのに…
nilptr.pfoobar()
}
0317デフォルトの名無しさん垢版2014/08/10(日) 19:18:14.11ID:8jOhhL8e
fooのメソッドをクロージャの外に書くことも出来るようにしたと言うことなのかな?
lazy 的な使い方だからそう考えると理解出来る
0320デフォルトの名無しさん垢版2014/08/29(金) 15:46:46.57ID:pefvZeNv
Goを書く上でおすすめのEditorって何?
atom使おうとしたら2MBのファイル制限があってtagsファイルが読み込めなくてがっかりした。

型を解釈してメソッドやメンバ変数がうまく補完されるEditorがほしいです。
0321デフォルトの名無しさん垢版2014/08/29(金) 16:06:57.25ID:pefvZeNv
//(1)a,_:=にすればエラーにならない
a:=func()(int,error){ return 0,fmt.Errorf("aaaaaa")}();
fmt.Println(a)
//(2)これはエラーにならない
for i:=range []string{"a","b","c","d"} {
fmt.Println(i)
}

(1)はエラーになるのはいいことだと思うけど、
(2)だとエラーにならずにindex値しか取得できない。
(2)も(1)と同様返って来たタプルの数に合わせないとエラーになるようにして欲しくない?
この仕様って何か理由あるの?
0322デフォルトの名無しさん垢版2014/08/29(金) 17:48:22.16ID:JF5lqIUA
Go は何故ジェネリックが出来ないんだろう、ずっとやるやると言ってて出来ないのは何か理由が有るんだろ?

ジェネリックが有るなしでは雲泥の差が有るからな
0325デフォルトの名無しさん垢版2014/09/01(月) 09:42:08.95ID:Aoi0Spsz
>> Wikipedia を見ると
>型の継承、ジェネリックプログラミング、アサーション、オーバーロードといった機能が存在しないことも特徴である。

っと書いてるけど特徴と言うよりも欠点だろ。 型の継承が出来ないと言う事は型の拡張/Extentionも出来ないんだろうな
0328デフォルトの名無しさん垢版2014/09/01(月) 15:58:36.52ID:SaUWCY70
インタフェースで良いじゃん
既に継承はレガシー化しつつある
Cジジィと言ってた世代がもうすぐ自分がジジィ呼ばわりされるのさ
0329デフォルトの名無しさん垢版2014/09/03(水) 22:51:40.57ID:OjPHMTTg
すみません、質問させてください。

Go言語で動的に読み込めるようなライブラリを作りたく思っています。
どのようにすれば、ライブラリ単体のコンパイルができるでしょうか?
また、作ったライブラリをどのようにすれば動的にロードする事ができるでしょうか?
よろしくお願いします。
0330デフォルトの名無しさん垢版2014/09/08(月) 19:26:19.55ID:GB5qWry9
無理
0331デフォルトの名無しさん垢版2014/09/08(月) 19:47:42.94ID:48pG8dL/
>>330
そうっぽいですね、質問後もいろいろ調べてたのですが、
Cとかで作ったライブラリは呼べるようですがGoだけでは無理っぽい・・・
ぜひライブラリも作れるようになってほしいですね
ありがとうございました
0339デフォルトの名無しさん垢版2014/09/29(月) 12:08:15.08ID:EIANdszU
golintが動かないと勘違いしていた
golintはgo testをカバーしてなかっただけ
golintとgo test両方実行しないと意味ねえな
0340デフォルトの名無しさん垢版2014/10/05(日) 20:59:06.62ID:zjAXSCyt
Append(sliceA, sliceB[x:xx]...)で参照先の配列を領域確保1発でコピー出来るなら
MakeでCap指定した方が良いCopyの使いどころって無いよね?
0341デフォルトの名無しさん垢版2014/10/12(日) 13:22:57.12ID:e6aIROEn
vim-goとvim-go-extraどっちを使おうか迷った僕がvim-goを選んだ理由

・vim-goの開発が活発で将来性がある。vim-go-extraは進化しないと思った。
・利用者が多いから。
0342デフォルトの名無しさん垢版2014/10/12(日) 14:01:02.40ID:e6aIROEn
vim-go-extraはgolangに入ってたものを配布しているだけのようなものだからそれをいじっていくというスタイルではないと思った
0344デフォルトの名無しさん垢版2014/11/02(日) 10:09:47.13ID:x5iq96Qv
変数無しRangeの使い道ってどんな時だろ
むしろforやifみたいに初期化文が置けるとスッキリするんだけど
0345デフォルトの名無しさん垢版2014/11/02(日) 11:17:59.44ID:r4spo6v1
1つ質問いいですか!
go言語ってコンパイルが早くて気に入ってるんだけど、
けど、なぜか突然コンパイルやテストが異常に遅くなったりする・・・
これの原因ってなんですか??
0348デフォルトの名無しさん垢版2014/11/02(日) 21:33:47.45ID:BYDmQ72k
それより先にChromeOSに飲み込まれる予感
でGoはGAEによるwebアプリとして、という形で置き換わ…らないかな…
0349デフォルトの名無しさん垢版2014/11/02(日) 22:09:45.10ID:uP+hCO1v
Javaは難しすぎるし文字列の連結も"a" + "b"みたいに+で書くのはダメでなんちゃらビルダーを使えとかでJava知らないとわかんないことも覚えないといけないからきつい
AndroidアプリはGo出かけるようにするべきだ
そしてJavaを切り捨てろ
0352デフォルトの名無しさん垢版2014/11/06(木) 09:31:48.41ID:Yj3faNE/
goimportを11/9までに変えろってツイートのタイムラインで流れてきたけどどうやって変えるの?
.bashrcとかでpathを設定しろってこと?そんな設定した覚え無いよ
0353デフォルトの名無しさん垢版2014/11/06(木) 09:40:38.83ID:aunNruia
書いてあるやんけ…

> Updating
>
> Any import path in any Go source file beginning with “code.google.com/p/go.”
> should change to begin with “golang.org/x/”.
>
> On Linux, OS X, and other Unix systems, this command updates all Go source
> files in the current directory and all subdirectories, so running it in your
> GOPATH workspace root should suffice to update all your source code:
>
> sed -i .orig 's|"code\.google\.com/p/go\.|"golang.org/x/|' \
> $(find . -name '*.go')
0354デフォルトの名無しさん垢版2014/11/06(木) 10:14:37.36ID:Yj3faNE/
英語わかりません><
ソースコードって自分が書いたソースコードだけですか?
それともgo getでインストールしたのとか/usr/local/go以下のも全部ですか?
0356デフォルトの名無しさん垢版2014/11/07(金) 10:31:39.22ID:s6Ia4x9k
そうか、ARTはLLVMだから、高速化のみならず、ここからGoやPythonまで巻き込んでいく可能性もあるのか
0363デフォルトの名無しさん垢版2014/11/16(日) 09:02:44.60ID:DyeXwdqD
今、TCPクライアントを書いているんですが、
テストで、サーバー側でCloseされたnet.ConnにWriteしても、
1回目は何のエラーも返さないんですが、なぜだか分かる人いますか?
2回目でbroken pipeと言われます。
0366デフォルトの名無しさん垢版2014/11/17(月) 17:21:35.06ID:zuuyG41U
そろそろGoのイディオムに沿ったリファクタリング本が欲しい
今までの物でも通じなくはないけど違和感がある
0367デフォルトの名無しさん垢版2014/11/17(月) 21:09:13.40ID:brk9wiVx
本がないと駄目とか馬鹿も大概にしろ
0369デフォルトの名無しさん垢版2014/11/17(月) 22:40:13.14ID:VgYWB20P
少数言語の存在を目障りに感じる奴って、脳のどこが壊れるとそうなるんだろうねw
0371デフォルトの名無しさん垢版2014/11/17(月) 22:52:12.08ID:Ogg/6z+g
本は俺もほしいなぁ
ってか、本とかまともにないと絶対普及しないと思うし。
誰か本書いてくれないかなぁ(チラチラ
0375デフォルトの名無しさん垢版2014/11/18(火) 11:45:48.09ID:WPotnA1T
インタフェースは遅くなると思って使わないようにしてたが
試しに使ってみたら便利すぎてフイタw
0377デフォルトの名無しさん垢版2014/11/20(木) 17:31:22.49ID:YC7+DKYP
男「よろしくお願いします」
面接官「で、君は何の言語ができるの?」
男「Goができます」
面接官「他には?」
男「Goだけです。Go一筋なんです」
面接官「面接を終了します。結果は後日
お知らせします。ありがとうございました」
0378デフォルトの名無しさん垢版2014/11/20(木) 17:40:23.96ID:YC7+DKYP
男「よろしくお願いします」
面接官「で、君は何の言語ができるの?」
男「Goができます」
面接官「え、囲碁は言語じゃないですよ」
男「囲碁じゃなくてGoなんです」
面接官「はあ? 言ってることがわかりません。面接を終了します。
結果は後日お知らせします。ありがとうございました」
0380デフォルトの名無しさん垢版2014/11/20(木) 17:50:59.42ID:YC7+DKYP
男「OK, I'm ready.」
面接官「By the way, what languages could you use」
男「I can use Go.」
面接官「What's!?」
男「Go!」
面接官「What are you saying? Where should we go to?」
男「Go!」
面接官「Oh, what a shitting guy! Get out of here!」
0381デフォルトの名無しさん垢版2014/11/20(木) 17:58:59.99ID:B4HwyTzw
        (~)
      γ´⌒`ヽ
      {i:i:i:i:i:i:i:i:}       
      /´⌒ヽ  )     ツマンネw
     (   __ )つ ⌒゚
' '''"''"" "'゙''` '゙ ゙゚' ''' '' ''' ゚` ゙ ゚ ゙''` `
0389デフォルトの名無しさん垢版2014/11/21(金) 10:22:44.31ID:OG/Y7Xo1
[仕事量]
PHP>Go
[利用者]
PHP>Go
[実績]
PHP>Go

トリプルコンボでPHPerの勝ち
Goferもっと頑張りたまえ
0391デフォルトの名無しさん垢版2014/11/21(金) 12:16:17.06ID:RKwctBBa
カンマ入り数値からカンマ外すのは、これ以外に無い?
strings.Replace("15,180,000", ",", "", -1))
0396デフォルトの名無しさん垢版2014/12/02(火) 05:14:09.00ID:Mms1FSAQ
インストールしようとしてググってたら、
公式だとtar落として自分で展開してpath通せって書いてあるんだけど
EPEL参照でyumからインスコ出来るっぽい
公式でそっちにしないのは、この方法だとなんか不都合あるんだろうか
0397デフォルトの名無しさん垢版2014/12/02(火) 07:38:42.44ID:vquYws+a
今は知らないが、俺が apt で入れたときは
go get でシステム領域を汚そうとしたから止めた。
0398デフォルトの名無しさん垢版2014/12/02(火) 18:04:09.77ID:Mms1FSAQ
>>397
それって使わなくなった時に削除するのがめんどいってのがデメリットなのかな
アップデートとかも全部yumでやるから別にいいかなぁ…
どもども
0399デフォルトの名無しさん垢版2014/12/03(水) 03:59:06.16ID:xemfXL8Z
yumからのインスコで使うことにしたけど、
一個めんどくさい点があった
GOROOTを設定しないとbuildとか出来ない
pathにバージョンとか入ってるわけじゃないので
バージョンアップするたびに環境変数修正ってのはなさそうだけど
0400デフォルトの名無しさん垢版2014/12/04(木) 19:17:39.60ID:FmXLQYZZ
公式はepelじゃないんだから妥当だと思う。
でないとepel自身がパッケージ作れんがな。
0401デフォルトの名無しさん垢版2014/12/08(月) 01:06:16.96ID:jJwEDCVJ
AngoIMEで書いているで

スマフォでさくさく並列処理楽ちんプログラム書けるとか

BPS時代がきたわ
問題はJKが隣にいないことやw
0404デフォルトの名無しさん垢版2014/12/10(水) 22:15:28.40ID:3ZzrTcyc
ttp://go-tour-jp.appspot.com/#37

--------------------------------
func main() {
m = make(map[string]Vertex)
m["Bell Labs"] = Vertex{
40.68433, -74.39967,
}
m["Bell Labs"].Lat = float64(1)     ←
fmt.Println(m["Bell Labs"])
}
--------------------------------

一行加えたら、
cannot assign to m["Bell Labs"].Lat
ってコケるんだけど
mapって別に参照専用ってわけでもない連想配列ですよね?
なんでコケるんでしょうかこれ…
0406デフォルトの名無しさん垢版2014/12/10(水) 22:47:12.63ID:3ZzrTcyc
>>405
私の認識や手順が違うとかじゃなく、ほんとにそのままでは出来ないんですね
でもwork-aroundって書いてるからそのうち直す的な感じなのかな
2年前ってのがあれですがw

ともあれ、ありがとうございます。
0407デフォルトの名無しさん垢版2014/12/11(木) 15:31:26.79ID:HIgp7OEe
go listってやっても
can't load package: package .: no buildable Go source files in /home/kido
ってなります

gocodeをgo getでインストールしてあるのですがどうしてgo listで表示されないんですか?
0409デフォルトの名無しさん垢版2014/12/13(土) 12:01:31.39ID:BVSGhnq7
>>404
structは値型だからね
m["unko"]はmに格納されてるVertexのコピーが返される
これに修正加えても反映されないよーっていうエラー
だからそう言う書き方がしたいなら
map[string]*Vertex
って宣言するといい
0410名無しさん@そうだ選挙に行こう垢版2014/12/13(土) 12:12:47.84ID:imyzRhSY
>>409
var m map[string]*Vertex

func main() {
m = make(map[string]*Vertex)
m["Bell Labs"] = &Vertex{
40.68433, -74.39967,
}
m["Bell Labs"].Lat = float64(1)
fmt.Println(m["Bell Labs"])
}

これで行けました。ありがとうございます!

便乗で質問なのですが、
var m map[string]*Vertex
mapに関しては個人的に全部これでいいんじゃないかなと思ってしまうのですが
リファレンス型(ポインタ型?)を使うデメリットってあるんでしょうか。
自分で思いつくのは、
           値                リファレンス
メリット       ?               アドレス情報にしかメモリを使わない
デメリット    コピー分メモリを食う     ソースがやや煩雑に

とう感じなのですが…
0411名無しさん@そうだ選挙に行こう垢版2014/12/13(土) 13:29:33.21ID:WvyZJyoU
primitive 型の時は困るな…

m = make(map[string]*int)
m["Bell Labs"] = &1

とかできないし…

m = make(map[string]*int)
x := 1
m["Bell Labs"] = &x

とかするのも本末転倒の様な気が
0412名無しさん@そうだ選挙に行こう垢版2014/12/13(土) 14:08:11.12ID:imyzRhSY
すみませんよくわかっていなかったようです…

type Vertex struct { Hage int }
func main() {
//primitive型 ------
var m map[string]int
m = make(map[string]int)

m["Bell Labs"] = 1
fmt.Println(m)

//中身構造体 ------
var n map[string]*Vertex
n = make(map[string]*Vertex)
n["Bell Labs"] = &Vertex{}

n["Bell Labs"].Hage = 1
fmt.Println(n)

//中身slice ------
var o map[string][]int
o = make(map[string][]int)

o["Bell Labs"] = append(o["Bell Labs"], 1)
fmt.Println(o)

o["Bell Labs"][0] = 2
fmt.Println(o)
}

こんな感じの使い分けですかね(´・ω・`)
sliceはappendでやれば直でokという感じなのかな…
0413名無しさん@そうだ選挙に行こう垢版2014/12/13(土) 14:43:59.47ID:BVSGhnq7
>>410
小さい構造体とかプリミティブなやつはポインタを取るより値渡しの方が速いって読んだことある
(結構公式な文書だったと思うんだけどどこだったか忘れた。すまん)
だからどっちかいいかは使い方によるのかもしれない

>>412
sliceは参照型だからね
それ自体でポインタみたいなもんだから直でいける
0415デフォルトの名無しさん垢版2014/12/29(月) 23:22:29.55ID:QuoLDkEA
高階関数ってリフレクションしないと駄目っぽいな
せっかく関数が第一級オブジェクトなのに何か勿体ない
0418デフォルトの名無しさん垢版2015/01/06(火) 21:00:48.30ID:h8AkEaym
誰でもいいから本出してほしい
多少高くてもいいから。できれば一人でなく複数人
0423デフォルトの名無しさん垢版2015/01/08(木) 12:15:26.41ID:r59ZtkkO
配列の最高値とインデックスを返すような多値関数から
最高値だけをAppendしたい場合、一旦変数に受けないと無理?
0425デフォルトの名無しさん垢版2015/01/08(木) 20:38:46.44ID:PYPv/bx4
>>423
無理やりだけどこんな感じで

package main

import (
"fmt"
)

func _max(list []int) (int, int) {
if len(list) == 0 {
return 0, -1
}
max := list[0]
pos := 0
for i := 0; i < len(list); i++ {
if max < list[i] {
max = list[i]
pos = i
}
}
return max, pos
}

func main() {
arr_1 := []int{1, 10, 3, 4, 5, 6, 7, 8}
arr_2 := []int{100}

arr_2 = append(arr_2, (func(arg ...int) int { return arg[0] }(_max(arr_1))))

fmt.Printf("%v\n", arr_2)
}
0428デフォルトの名無しさん垢版2015/02/04(水) 19:19:43.13ID:8Sw6mo5N
go getでインストールしたパッケージはGOPATHで指定したパスにインストールされるけどさ
go listっていうのはこのGOPATHにインストールされているパッケージ一覧を表示してくれるってわけじゃないんですか?
$ go list
>can't load package: package .: no buildable Go source files in /home/kidotoyohiko
こうなるんですが
0429デフォルトの名無しさん垢版2015/03/09(月) 12:22:38.99ID:ZcxXoJVE
Go言語を勉強し始めたばかりだけど匿名フィールドは構造体名でアクセスできるんだな
気づくのにすこし時間かかった
type Aaa struct {
str1 string
}
func newAaa() *Aaa {
t := new(Aaa)
t.str1 = "str1"
return t
}
func (t *Aaa) Print() {
fmt.Println(t.str1)
}
type Bbb struct {
*Aaa
str2 string
}
func newBbb() *Bbb {
t := new(Bbb)
t.Aaa = newAaa()
t.str2 = "str2"
return t
}
func (t *Bbb) Print() {
t.Aaa.Print()
fmt.Println(t.str2)
}
func main() {
t := newBbb()
t.Print()
}
0433デフォルトの名無しさん垢版2015/05/27(水) 08:44:30.80ID:CaoeGQX/
main関数を他の関数の上に持っていくか下に持っていくか迷ってるんだけど
ルールがあったりする?
0436デフォルトの名無しさん垢版2015/06/05(金) 22:59:12.97ID:kU15dp2l
Cとか書いた事も無いので何で後ろに有るのか不思議に思ってたけど
ググってスッキリした
0439デフォルトの名無しさん垢版2015/06/11(木) 20:17:20.73ID:7zT8SS54
go build はカレントディレクトリに実行ファイルを生成
go install は go build に加えて実行ファイルをGOBINに移動させる

って理解であってる?
0440デフォルトの名無しさん垢版2015/06/18(木) 12:32:46.05ID:UagCHqSk
>>439

ttp://jp.techcrunch.com/2015/06/18/20150617google-microsoft-mozilla-and-others-team-up-to-launch-webassembly-a-new-binary-format-for-the-web/

goがクライアントサイドで動くかも?
0443デフォルトの名無しさん垢版2015/06/19(金) 16:59:13.37ID:fpEnerGj
サーバサイドアプリを作ってるんですが、
ファイルの変更を検出して今のプロセスを殺して go run XXX.go を再実行してくれる良いツールないでしょうか?

Ctrl+c して go run XXXX.go とか地味にイライラする
0445デフォルトの名無しさん垢版2015/10/31(土) 18:57:33.63ID:ELtLmf7b
DLL作れるようになったのかと思ったらWindowsじゃサポートされてないのね
0449447垢版2015/12/02(水) 10:15:23.48ID:I9gRsCT5
>>448
ありがとうございました。
0452デフォルトの名無しさん垢版2015/12/04(金) 13:21:31.35ID:hYxOV08j
Rails登場前のRubyくらいの知名度かな
非エンジニアなクライアントにgolangもやってます、と伝えても初耳って人が多いね
技術者ならだいたい聞いたことはあるって帰ってくるけど

もっと流行っても良いんじゃないかとは思うけど、ぐぐれば情報が十分ある程度には使われてるし不自由な状況ではないんだよな
0456デフォルトの名無しさん垢版2015/12/25(金) 02:25:51.96ID:y60VPA7n
goは外部ツール充実してっからどのエディタでも同じレベルで快適だよ。だいたいgo用のパッケージかプラグインあるでしょ。だから好きなエディタ使え
0457デフォルトの名無しさん垢版2015/12/31(木) 20:19:55.18ID:BO+mMVFR
>> 455

IntelliJがいいよ。
はてなの中の人もオススメしてた。
0458デフォルトの名無しさん垢版2015/12/31(木) 20:20:32.48ID:BO+mMVFR
上のレス >> 454 だった
0460デフォルトの名無しさん垢版2016/01/01(金) 13:12:47.05ID:E/hak+Py
マ イ ン ド コ ン ト ロ ー ル の手法

・沢山の人が、偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

・不利な質問をさせなくしたり、不利な質問には答えない、スルーする
 誰にも質問や反論をさせないことにより、誰もが皆、疑いなど無いんだと信じ込ませる手法

偏った思想や考え方に染まっていたり、常識が通じない人間は、頭が悪いフリをしているカルト工作員の可能性が高い

靖 国 参 拝、皇 族、国 旗 国 歌、神 社 神 道を嫌う カ ル ト

10人に一人は カ ル ト か 外 国 人

「ガ ス ラ イ テ ィ ン グ」 で 検 索 を !ll
0461デフォルトの名無しさん垢版2016/01/02(土) 15:11:34.83ID:dDeNCcj5
・沢山の人が、偏った意見を一貫して支持する
 偏った意見でも、集団の中でその意見が信じられていれば、自分の考え方は間違っているのか、等と思わせる手法

消費税ですね判ります
0462デフォルトの名無しさん垢版2016/01/06(水) 23:14:14.44ID:4CIgSJD1
オライリーから本出るね
0465デフォルトの名無しさん垢版2016/01/07(木) 12:35:59.31ID:N5HH13xV
英語版だと5ドルで買えるから英語版読んだら。
0466デフォルトの名無しさん垢版2016/01/13(水) 09:40:10.12ID:LriSB9Er
Goの性能を測ってみたいと思いましてね

構成はこう
(1) Win10 Postgres Apache PHP5.6
PDO, prepare, execute, print
(2) Win10 Postgres GO
sql.Open, Query, Next(Fprintf)

テーブルから1000行6カラム読んでプリント
SQL文は同じ、Select * From TestTable Limit 1000
というテストを、負荷テストツールのpylot1.26でやってみたんすよ

結果
(1) 750リクエスト/分 80msec/一回
(2) 706リクエスト/分 84msec/一回

PHPはフレームワークも何も無しで10行くらい
Goも通ってるのは10行くらいなんですが
9割方データベースだろ、って状態ではこんな感じでしょうかね
0467デフォルトの名無しさん垢版2016/01/13(水) 11:46:07.30ID:EwraTGVM
Win10使ってる時点でお察し
0468デフォルトの名無しさん垢版2016/01/13(水) 12:08:33.96ID:uMvtIS1u
横からだけどこういう比較するときはVirtualBoxあたりでLinux環境立てたほうが良いんかね?
0469デフォルトの名無しさん垢版2016/01/13(水) 14:35:53.26ID:CipOufW1
Go「Linuxなら…本気出す」

別の場所でちょい古のDebianで試してみた所
(1)PHP 463リクエスト/分 129msec/回
(2)Go 410リクエスト/分 145msec/回
やっぱりGoの方がわずかに遅いっぽい…
0470デフォルトの名無しさん垢版2016/01/13(水) 14:58:45.80ID:CipOufW1
PasteBinに貼って置くので「ここやがな」てのが有れば教えてくれください

ttp://pastebin.com/kQBFhVQp
ttp://pastebin.com/6bACps6v
0471デフォルトの名無しさん垢版2016/01/13(水) 15:54:22.06ID:EwraTGVM
糞はfmtじゃね
0472デフォルトの名無しさん垢版2016/01/13(水) 17:13:31.80ID:jmhOlm9C
part1 て....人気ないの?それとも2ch に書き込むような品性下劣な人間が少ないってこと?
0473デフォルトの名無しさん垢版2016/01/13(水) 17:23:19.96ID:7cbOl3Dp
Tiobe だと 50位以内に入ってないぞ
まあキッシュイーターが群がるような代物でもないけど
0474デフォルトの名無しさん垢版2016/01/13(水) 18:05:20.91ID:EwraTGVM
>>472
前にも Go スレは何度か建ってたのでこれが part1 というのは間違い
0475デフォルトの名無しさん垢版2016/01/13(水) 19:30:58.60ID:cjoN9klk
言語仕様が安定してるから話すことないとかかな。
Swiftなんかガンガン変更しまくりで試行錯誤感が半端ない。
goにジェネリクスが付いたらまた変わるのかも。
正直メタプログラミングが弱いのが辛い。ちょっとしたツール系を作るのはいいけど、
Webアプリをこれで作りたいとあんまり思わないだよなぁ
0478デフォルトの名無しさん垢版2016/01/14(木) 03:24:09.60ID:byr4bFjT
>>475
webアプリではないけど、GAE/goをモバイルバックエンドに使ったらスケール悩まず書けて素敵なんだけどな
最近ならSPAでも便利だろう
小規模サービスなんで恐縮だが個人的には安く上がってると思ってる

ただそういう向きで価値見出す人はすでにAWSに取られちゃってる印象だよね
Datastoreを高いとは言わないけど落とし穴が多いとは思うし

goでwebやるならGAEも是非とは言いたい
0479デフォルトの名無しさん垢版2016/01/14(木) 03:40:41.70ID:UUuhE8Rb
>>470
自己メモレス
Fprintf(w, "書式", 変数)をやめる
Fprint(w, r.a + ":" + r.b ...
その場で一度に文字列連結、にすると2%くらい速くなる模様ですぞ
こうするとやってることはPHPとほとんど同一で、差も微粒子レベルで存在になるかな
0480デフォルトの名無しさん垢版2016/01/14(木) 10:38:57.14ID:YBLBbkKl
>>478
手軽にwebAPIサーバーが書けるフレームワークって何が便利なの?
echo?gin?そろそろデファクトスタンダードが出てほしい。
最近Elixir+phonix触ってるんだけど、エラー時にプロセス再起動する機能が組み込んであるのが便利そう。
goでデーモン書くのって決まりきった書き方もないみたいだし、
いろいろ下回りを自前で準備する感じがするんだけど、、、
0481デフォルトの名無しさん垢版2016/01/14(木) 19:16:39.15ID:MVoyv7BA
>>479
Fprintf も止めればもっと速くなる
0486デフォルトの名無しさん垢版2016/01/25(月) 00:44:23.45ID:MxjMVzG6
Goで素数判定をエラトステネスのふるいにして書いてみたけどrubyのprimeライブラリより遅かった
Goってあんまり速くないの?教えてエロい人
0488デフォルトの名無しさん垢版2016/01/25(月) 01:16:17.48ID:MxjMVzG6
>>487
バージョンは1.5
コードは俺のが遅いのかまともに書いてる人のでも遅いのかが気になってるだけだから載せるまでもないかなと思ってる
0489デフォルトの名無しさん垢版2016/01/25(月) 01:48:00.41ID:11Jcfjfr
$ ruby --version
ruby 2.2.3p173 (2015-08-18) [i386-linux-gnu]
$ time { ruby -e 'require "prime";print Prime.take(10000)' > /dev/null; }
real 0m0.405s
user 0m0.400s
sys 0m0.008s

↓このコードをローカルにコピーして、

http://play.golang.org/p/XXiTIpRBAu

const N = 104740 に変更してビルド・実行。

$ go version
go version devel +4f40182 Sat Jan 23 01:28:06 2016 +0000 linux/386
$ go build prime.go
$ time { ./prime > /dev/null; }
real 0m0.064s
user 0m0.048s
sys 0m0.016s
0490デフォルトの名無しさん垢版2016/01/25(月) 02:28:15.33ID:MxjMVzG6
>>489 thx
それぐらいの桁数だと自分の環境でもgoのコードのが速いんだけど、桁数増えると圧倒的に負けるようになる
というかgoが時間かかりすぎる
104700000が素数かどうかの判定の時点ですでに負けてる
$ go version
go version go1.5.1 darwin/amd64
$ time ./prime
(結果略)
0.38s user 0.01s system 98% cpu 0.395 total

$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
$ time tuby -e 'require "prime"; p 104700000.prime?'
(結果略)
0.13s user 0.09s system 86% cpu 0.254 total

goコード: http://play.golang.org/p/1y7lrBML1-
0491デフォルトの名無しさん垢版2016/01/25(月) 08:54:26.29ID:11Jcfjfr
そんなに遅いかな?

x86_64 環境で Prime.take(10000000) をやってみたんだけど(10^7)、

$ ruby --version
ruby 2.2.3p173 (2015-08-18) [x86_64-linux-gnu]
$ go version
go version devel +970ce1c Sun Jan 24 16:07:30 2016 +0000 linux/amd64

ruby: 0m25.204s
golang: 0m5.902s

となった。prime? メソッドについては後で ruby のソースコードを見てみる
0492デフォルトの名無しさん垢版2016/01/25(月) 09:30:52.61ID:11Jcfjfr
ここは、

for i := 3; float64(i) < math.Sqrt(float64(n)); i += 2 {
flg = true
for _, j := range primes {
if int64(i) % j == 0 { flg = false }
}
if flg == true { primes = append(primes, int64(i)) }
}

こうすべきなんじゃ?

for i := 3; float64(i) < math.Sqrt(float64(n)); i += 2 {
flg = true
for _, j := range primes {
if n%j == 0 { return false } // 追加
if int64(i)%j == 0 { flg = false }
:

そりゃ n までの素数を全部計算してからチェックしたら遅いわな
0496デフォルトの名無しさん垢版2016/01/27(水) 21:15:12.05ID:hT8Bs+OE
>>495
素数: 1853028778786433 について試してみた
$ time ruby -e 'require "prime"; puts 1853028778786433.prime?'
4.61s user 0.08s system 99% cpu 4.700 total
golang の方は有意な時間で判定できなかった。
逆に小さな約数を持つ場合だと golang のが早かったりする。
一体どうやったらこんなに速くなるんだ・・・
0498デフォルトの名無しさん垢版2016/01/27(水) 23:10:29.76ID:qL6rtn4g
どれだけ高度なコンパイラを使おうとアルゴリズムがダメならインタプリタに負けるって事がはっきりわかんだね
0500デフォルトの名無しさん垢版2016/01/30(土) 14:11:30.69ID:VBtK9+ST
>>499
細かいところだがサンクス
ちなみにどれぐらい速度変わった?
今出先で調べられないんで気になる
0502デフォルトの名無しさん垢版2016/02/03(水) 01:00:13.99ID:RekMB9Ax
goは言語仕様が絞られて素敵だけど、
いざ使うとなるとやっぱりメタプログラミングに弱いのが辛い。
リフレクションも使いづらいし、ジェネリクスがほしい。
せめてelxirのマクロみたいな機能でもほしい。
0504デフォルトの名無しさん垢版2016/02/03(水) 19:27:02.90ID:8oEH7nQt
     ,_---~~~~~----._    
 _,,_,*^____   _____``*g*\"*,
/ __/ /'   ^. /   \ ^@q  f
[ @f | @))  | | @))  l 0 _/ 
\`/  \~____ / __ \_____/  \ 
 |      _l__l_      I 
 }     [______]      I 
 ]      | | |      |  お年寄り向け言語に文句言うな
 ]       ~ ~       | 
 |              | 
  |              |
0507デフォルトの名無しさん垢版2016/02/04(木) 19:16:26.71ID:qHo6spb8
go buildで最適化オプションないよね。

他言語の最適化おプチョンって何してるかわからんけど(デバッグ機能とか削ってんの?)、
実はgoってもう少し早くなるんじゃないかと思うんだが。
0510デフォルトの名無しさん垢版2016/02/18(木) 07:25:41.93ID:R9/9Yxv0
go 1.6 age
ttps://blog.golang.org/go1.6
0511デフォルトの名無しさん垢版2016/02/18(木) 17:06:46.52ID:45GMtAZP
1.6は少し難産だったかな。
0512デフォルトの名無しさん垢版2016/02/25(木) 14:07:18.05ID:1iIBqXg3
Goってサンプルコード見た感じ
プロトタイプベースの動的型付けでJavaScriptみたいに見えるけど
ぜんぜん違う?
0514デフォルトの名無しさん垢版2016/02/26(金) 02:02:53.28ID:xrOnn7Vq
>>511
一番すごい変更はvendoringかな。
コンパイル速度も速いままだし。

あと開発環境はvisualStudioCodeのgoサポートが一番いい気がするんだけどどう?
debugが一応スタックトレースくらいは見れるから
code readlingしやすくなったかも
0519デフォルトの名無しさん垢版2016/03/01(火) 01:00:37.90ID:29/rUB4E
for r := range "よろしく" {
fmt.Printf("<%c>¥n",r)
}

と、書くと実際にはrに入るのはindexなので期待通りに動きません
goにおいて多値を帰す場合は受け取り側もその数分用意しなくてはいけない
のが仕様のはずですが、
これは組み込みの機能なので対象外の動作です。
せめてrにはvalueが入るのが基本動作なら良かったんですが
このような挙動なのにはなにか理由があるんでしょうか?
教えて下さい
0520デフォルトの名無しさん垢版2016/03/01(火) 07:46:36.94ID:6qCWzYt3
文字列がインデックス付きデータだからでしょ。

_, r := range "よろしく"

では駄目なの?
0521デフォルトの名無しさん垢版2016/03/02(水) 02:02:01.07ID:O+5v5XDS
>>520

いえ、聞きたいのは
rangeの機能が通常のGoとしての関数の仕様と
異なる動作にしたのはどんな理由があってのことなのかと。

関数がエラーを含んだ多値を返すことを考慮して受け取り側は常に何個の返り値が返るか
意識することが必須ですが、
rangeは2つめの返り値を'_'で受取る必要が
なくても唯一動くことが許されていますよね
0522デフォルトの名無しさん垢版2016/03/02(水) 02:36:27.86ID:KGp7/CHI
そもそもfor文なんだからインデックスだけ使う場合はそういう表記でも違和感なくね?と思うんですが
0524デフォルトの名無しさん垢版2016/03/02(水) 07:57:52.01ID:WtpIOuzZ
>>521
型アサーションも第二返り値を付けると失敗時に panic せずに失敗したことを真偽値で返すし、
開発者はそうすることで利便性が上回ると判断したんでしょ。
0525デフォルトの名無しさん垢版2016/03/02(水) 17:47:47.86ID:O+5v5XDS
>>524
あっ型アサーションもそういう挙動だったですね。
失念してました。
でもrangeで多値返却の省略可能な構文はメリットが思いつかなくないですか?
0526デフォルトの名無しさん垢版2016/03/02(水) 19:29:42.93ID:LM//BLJD
>>525
型アサーションだけでなく comma OK 構文全部だね。

>rangeで多値返却の省略可能な構文はメリットが思いつかなくないですか
型アサーションの挙動を見るに、省略してると言うより返り値の数によって別の処理を呼び出してる感じだけど、
まあ、パターンを覚えてしまえば余計なもの書かなくて済んで楽だよ。
0527デフォルトの名無しさん垢版2016/03/06(日) 23:04:28.69ID:b6Djrwpa
Goで使われたものでよく使ってるものとか面白いものとかないですか?
俺がよく使うのはghqです。

ghq : Manage remote repository clones

とりあえず試しにgit cloneするのに便利。後で迷わないし。
pecoと組み合わせで使っています
0528デフォルトの名無しさん垢版2016/03/08(火) 07:20:41.16ID:UEJ8DCRQ
仕事で使う使い捨てツールはgoで書いてるよ
rubyとかで書くと処理遅いから。
0535デフォルトの名無しさん垢版2016/03/12(土) 14:48:41.88ID:SnyNHJuk
よく言われるのは、サーバーサイドでシングルバイナリのデプロイが楽とか。
unix上では、etcdやdockerコマンドみたいなところで使われてるよね。
GCもどんどん進化してるから、データストア的な大量メモリを扱うデーモンにも使えるようになってきてる。
0538デフォルトの名無しさん垢版2016/03/15(火) 22:07:51.01ID:vgWvBE4N
4月にも初心者向けの本出るのね
0539デフォルトの名無しさん垢版2016/03/16(水) 10:59:19.14ID:Tb17X3fe
だれかaltGo作ってくんないかな。
Goのエコシステムは最高だから、あとはもっとメタプログラミング強くしてほしい。
ジェネリクス付けて。

とTypeScript触りながら思いました。
0543デフォルトの名無しさん垢版2016/04/05(火) 22:44:14.08ID:mDmXAcnH
goってあんまり言語仕様が変化しないイメージだから
本は作りやすそう。
goの今後の予定ってドコに書いてるんです?
0546デフォルトの名無しさん垢版2016/04/13(水) 14:39:12.21ID:ndZ6lh6D
>>545
rubyは下位互換性を捨てながらマイナーバージョンアップしてないか?
たまにcocoapodsが死んだりするんだが。
goで書き直してほしい。コマンドラインツールこそgoで書いてほしい
0548デフォルトの名無しさん垢版2016/05/01(日) 15:24:29.85ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
0550デフォルトの名無しさん垢版2016/05/11(水) 16:06:51.62ID:eKmG0PfI
GoでWindows GUIアプリ作った猛者はおりますか?
0554デフォルトの名無しさん垢版2016/06/01(水) 11:32:56.19ID:sax7yxVA
Go言語先週から学習し始めたけど、何か変な言語だな
JavaScriptのようにいまいち不完全な言語に思えてしまう
突然意図しない挙動が発生したりで、なかなか基幹システムでは使いにくいのかな?
Javaのようなガッチリ感がない気がするので

でもシンプルさなど良い面もあるけれど
0555デフォルトの名無しさん垢版2016/06/01(水) 15:06:00.18ID:559HNr1m
誰もGo言語を基幹システム作るのに使おうとは思わんよ
銀の弾丸がないことを理解していない人間が評価という行為をするのは難しい
0564デフォルトの名無しさん垢版2016/06/01(水) 22:56:48.57ID:tjGnKxey
LLやってる人からすると、バイナリをgdb使ってデバッグするのは教えてもらわないとなかなか難しいかも。
phpやrubyやってても普段からIDEでデバッガ使ってればそんなに違いはないんだけどね。
0566デフォルトの名無しさん垢版2016/06/02(木) 04:24:28.34ID:cXOBdHTr
>>554
その意図しない挙動という部分を具体的に出してもらいたい。
大概そういうのは言語のせいじゃなくて自分のせい。というのを
長い年月で繰り返して学習するもんだけども
0568デフォルトの名無しさん垢版2016/06/02(木) 10:03:29.88ID:sFcAoyCt
func later() func(string) string {
...
return func(g string) string {
...
}
}
ごめん、このクロージャの最初の部分のlater() func(string) stringってどういう意味?
関数名がlater 戻り値がstringは分かるけど、func(string)がなんでこんな場所に書かれてるのかな、と
0572デフォルトの名無しさん垢版2016/06/02(木) 15:52:21.01ID:sFcAoyCt
>>569
あぁ、なるほど
ようやく今理解した

func later() [func(string) string] {
[]は見やすいようにわざと書いたけど、こういう事だね

関数laterは引数は取らずに、
返り値として「stringを引数に取り、stringを返り値として返す」
0573デフォルトの名無しさん垢版2016/06/02(木) 16:09:51.23ID:sFcAoyCt
あれ、ちょっと待って

https://ideone.com/i9EfQl

later()は引数取らないけれど、
f := later()
f("apple")
どっからstoreに"apple"なんか文字列引数が渡されてるの?
こういう型の場合、ローカル変数(ここではstore)にコンストラクタのような働きが起って自動的に引数がセットされるって事?
0574デフォルトの名無しさん垢版2016/06/02(木) 16:14:42.71ID:sFcAoyCt
連投ごめん
f := late()
によって、fはlater()の返り値の関数を取得してるんだね
だから、f("apple")には上の無名関数func(string) stringが呼び出されて"apple"が引数とされているってことか
ごめん、分かった
0575デフォルトの名無しさん垢版2016/06/03(金) 17:56:32.51ID:BR7tIPAt
http://mattn.kaoriya.net/software/lang/go/20131112132831.htm

これの最初のコードの最後の部分、
<-workerquit
は何をしてるの?

特に変数に代入することもないし

func (g *G) ClearMsg() {
for len(g.task) > 0 {
<- g.task
}
}
も同じ事してるけど
チャネルを開放してるのかな、とも思ったけど、明示的にcloseしなくていいのかな、と
またはnilや空文字などにするとか
0577デフォルトの名無しさん垢版2016/06/04(土) 20:36:19.02ID:OVOooqIv
windows版のbuildmodeはexeしかできないの?
もしできるならスクリプト言語のrequireみたいに動的な読み込みとかできる?
さらにもしできたとしてunload的な名前空間の削除は?
0578デフォルトの名無しさん垢版2016/06/06(月) 11:35:10.38ID:4GD0zoa3
>>576
遅くなったけど返答ありがと

そうなんだ
終了待ちとかあるんだ
普通にやることなければその場でkillのように終了させたほうがいい気もするけど、Goは一気にまとめて終了させるってことなのかな?
0579デフォルトの名無しさん垢版2016/06/06(月) 13:30:02.95ID:u3gzbyWM
>>578
終了待ちのところをコメントアウトして実行してみると分かると思うけど、終了待ちしないとgoroutineを回し切る前にmainが先に終わってしまう
0582581垢版2016/06/08(水) 00:28:26.77ID:sUO1i6Sl
あぁ、ごめん
fmt.Println(mes.ShowMessage())にすればいいんだね
0584デフォルトの名無しさん垢版2016/06/08(水) 13:40:28.97ID:6nwZJnu3
you 変数は必要ないんじゃ?

//you := make(map[string]string)

//you["Your_name"] = scanner.Text()
me.Your_name = scanner.Text()

//you["Your_gender"] = scanner.Text()
me.Your_gender = scanner.Text()

//me.SetProfile(you)
0585デフォルトの名無しさん垢版2016/06/08(水) 14:51:56.44ID:E58O1JXH
>>584
ほんとだ、ありがと
俺バカだなぁ

しかし、もし上記のような場合って処理できるのかな?
for k, v := range arr {
switch k{
case
0586デフォルトの名無しさん垢版2016/06/08(水) 15:28:46.54ID:E58O1JXH
switch k{ case 'Your_name': p.Your_name = v; } } のような処理は考えうるけど、
Pythonでいうsetattr(self, k, v)のようなこと出来ないのかなと思ったり
0587デフォルトの名無しさん垢版2016/06/08(水) 16:47:30.19ID:6nwZJnu3
んー、reflection を使えば良いんじゃないかな

func (p *Profile) SetProfile(arr map[string]string) {
for k, v := range arr {
key := reflect.ValueOf(p).Elem().FieldByName(k)
if key.IsValid() {
key.SetString(v)
}
}
}
0589デフォルトの名無しさん垢版2016/06/10(金) 11:28:41.43ID:+PET1099
http://qiita.com/kitoko552/items/a6698c68379a8cd8b999
オブジェクト指向っぽいことを試してみようと思い、上記のページを参考に以下のコード書いてみた
https://ideone.com/3ClfoG

$ go run capsule.go
# command-line-arguments
.\capsule.go:24: invalid indirect of Human literal (type Human)
というエラーが出るんだけどどこをどう変えればいいですか?

やりたいことは、
・カプセル化
・getter, setterの定義
・Embed
0593デフォルトの名無しさん垢版2016/06/11(土) 01:51:48.80ID:vokBGi10
>>587
https://ideone.com/rGIVZU
このような場合は上手くいったけど、

https://ideone.com/86I4on
このように、構造体に2つの構造体が埋め込まれていて、それらに更に動的にメンバ変数に値を入れていくとなるとどうすればいいのか悩んでるんですが
コメントで★を入れた部分はどのように記述すれば良いのか全く分からず半日くらい費やしてます(苦笑)
0594デフォルトの名無しさん垢版2016/06/11(土) 02:54:26.06ID:ncrPm/bC
とりあえずは即時関数で。

return &Profile{
mine: func() (m MyProfile) { m.SetProfile(arr["me"]); return }(),
yours: func() (y YourProfile) { y.SetProfile(arr["you"]); return }(),
}
0595デフォルトの名無しさん垢版2016/06/11(土) 12:57:03.40ID:5N4sydIU
>>594
ありがと
本当に助かりました
自分には浮かばない発想でした

しかし、一つ聞きたいのは、
func NewProfile(arr map[string]map[string]interface{}) *Profile {
var m MyProfile
var u YourProfile
return &Profile{
mine: m.SetProfile(arr[
0596デフォルトの名無しさん垢版2016/06/11(土) 12:58:26.45ID:5N4sydIU
>>594
ありがと
本当に助かりました
自分には浮かばない発想でした

しかし、一つ聞きたいのは、
func NewProfile(arr map[string]map[string]interface{}) *Profile {
var m MyProfile
var u YourProfile
return &Profile{
mine: m.SetProfile(arr['me']),
yours: u.SetProfile(arr['you']),
}
}
はダメなのに、なぜ
func NewProfile(arr map[string]map[string]interface{}) *Profile {
return &Profile{
mine: func() (m MyProfile) { m.SetProfile(arr['me']); return }(),
yours: func() (u YourProfile) { u.SetProfile(arr['you']); return }(),
}
}
は可能なのかな、と
SetProfile()自体が関数なのに、なぜわざわざ無名関数使って内包したSetProfile()を呼び出さないと上手くいかないんですかね?
0598デフォルトの名無しさん垢版2016/06/11(土) 13:26:31.32ID:ncrPm/bC
>>596

m.SetProfile(arr['me'])

この場合、副作用だけ(オブジェクトに値がセットされるだけ)なので、
return m とする(オブジェクトを返す)必要があるのです。

とは言うものの、SetProfile はメソッドではなく通常の関数でも良いのでは?
と思ったので http://ideone.com/5rnnHW ではそうしています。
0599デフォルトの名無しさん垢版2016/06/11(土) 13:44:39.08ID:5N4sydIU
>>598
なるほど、良く分かりました
別の方法も教えていただきありがとうございました
勉強になりました
0600デフォルトの名無しさん垢版2016/06/11(土) 14:12:16.15ID:JfIPVaDb
>>590
func NewHuman(name string, jobname string, position string) Human { return Human{ 〜
としても動くけど、これだと値渡しになって
h1 := NewHuman("Shinzou Abe", "politician", "prime minister") 呼んだときにも
中で1回コピー起こって無駄だから参照渡しにするってことでいいの?
0601デフォルトの名無しさん垢版2016/06/11(土) 22:32:52.72ID:oEY46iar
Javaで言う、ScannerのNextInt()みたいなのってGoには無いの?
bufioのText()しか調べても出てこないんだけど、これを型キャストしろってことなのかな?

scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
n := scanner.Text()
これをn.(int)って感じ?
0603デフォルトの名無しさん垢版2016/06/17(金) 15:30:55.46ID:De9+BeR4
出た。

プログラミング言語Go 
Alan A.A. Donovan, Brian W. Kernighan 著
柴田芳樹 訳     
発行元:丸善出版(株)
0604デフォルトの名無しさん垢版2016/07/10(日) 22:27:22.81ID:znpcZSb6
var t *time.Time = & time.Now()
とやると
cannot take the address of time.Now()
って出るんですけどなんでダメなのか教えて下さい
0606デフォルトの名無しさん垢版2016/07/15(金) 11:24:05.90ID:tpc0LssI
t := & time.Time{}

ts := time.Now()
t := &ts
みたいにアドレスで変数に保管したいってことだろ

ttps://golang.org/ref/spec#Address_operators
言語仕様上、&演算子が変数か構造体(のコンストラクタ)しか認めてない感じ?
実態の持ち主が行方不明になる可能性があってGCが動かなくなるのかねぇ
0611デフォルトの名無しさん垢版2016/07/20(水) 21:59:45.12ID:ZQpbH517
golang でWeb開発してる人にお聞きしたいんですけど
db周りってどうしてますか?
tableごとに構造体を用意した場合、単純に1tableをSELECTする分にはなんの問題もないんでしょうけど
joinしまくってた場合、各クエリごとに構造体を作ってる感じでしょうか?
そんなのだるいですよね。
どうしてるのか教えて下さい。
0614デフォルトの名無しさん垢版2016/07/22(金) 13:59:08.89ID:f6dSUOKk
pokemon Go Go
0616デフォルトの名無しさん垢版2016/07/23(土) 14:35:34.70ID:6lYjBmg5
Ninjin Go
0619デフォルトの名無しさん垢版2016/07/25(月) 09:19:11.89ID:l5ht4z0Z
selectするカラムのサイズのインターフェース型の配列を作って渡すじゃだめなの?
0620デフォルトの名無しさん垢版2016/07/25(月) 10:20:31.42ID:RKFFw9Lx
コードをチェックするときに
gofmtとgolintを設定したんですが両方共エラーがあった時に同じエラーを吐きます
どっちか一つでチェックさせれば良いんでしょうか?
0624デフォルトの名無しさん垢版2016/08/03(水) 12:29:51.75ID:48QXmcl+
この言語についてすこし気になっています。
例えばC言語のようにビット単位での操作などはできますか?
言い換えると、組み込みやOSカーネルのプログラミングなどは視野にあるのでしょうか?
またはC言語を完全に置き換える存在になりえますか?
0625デフォルトの名無しさん垢版2016/08/03(水) 13:17:02.98ID:mbys/AN5
goよりgithubの方が長生きするんでね
0626デフォルトの名無しさん垢版2016/08/03(水) 13:18:36.00ID:mbys/AN5
>>624
Windows用のDLLがc-sharedで作れるようになればなー
0628デフォルトの名無しさん垢版2016/08/04(木) 01:10:59.73ID:BIHJkeI+
GC前提っていうけど、objective-cやswiftみたいにARCでリソース解放してやることはできないのかな?
0629デフォルトの名無しさん垢版2016/08/04(木) 11:14:28.20ID:Ul5WpRfd
>>628
GCを切るというオプションはないと思う
そういう小回りを聞かせたいならrustとかC++を選ぶしかない。
0630デフォルトの名無しさん垢版2016/08/04(木) 11:56:34.90ID:8anV95gh
gokiburi
0631デフォルトの名無しさん垢版2016/08/04(木) 11:58:01.10ID:8anV95gh
OSだってそれ自身でGCやってるしなー
作業中にいきなり固まってHDDゴロゴロ言わせて
時計も止まってマウスも動かない
30分くらい放置してたら治ったり
0632デフォルトの名無しさん垢版2016/08/04(木) 12:59:03.09ID:SddwJFqD
GCはオプションではないようですね。
もうすこし調査が必要なようです。
ありがとうございました。
0635デフォルトの名無しさん垢版2016/08/05(金) 11:02:44.30ID:h08emFzO
>>633
メモリが足りなくなった時にキャッシュを解放して、コンパクションを走らせてるという動きは似たようなもの、と
言いたかったんじゃね?
0636デフォルトの名無しさん垢版2016/08/05(金) 13:39:10.50ID:r9Q5JMfz
ちょっとだけスレ違いかもだけど
kindle unlimitedとかいう電子書籍読み放題プラン始まって
技術書みてたらgoの入門書1.6対応版みつけた。
ttps://www.amazon.co.jp/dp/B01FH3KRTI/ref=cm_sw_r_tw_dp_x_TwbPxbN1BHQKM

結構読みやすい。
0637デフォルトの名無しさん垢版2016/08/06(土) 00:06:34.76ID:ukQkptRq
IT関連は今のところ、ほぼその本出してる翔泳社だけかな?
アメリカの方探してみたけど、そっちはどこも参加してない気がする。
0638620垢版2016/08/06(土) 17:15:53.39ID:TNYUaRVo
どなたかおねがいします
0640デフォルトの名無しさん垢版2016/08/24(水) 21:36:46.93ID:JcWOBO6t
loopのネストが多いと、go1.7で遅くなるらしい
SSAの関係で。

ttp://shinpei.github.io/blog/2016/08/13/what-ssa-brings-to-go-17/

俺のプログラムも遅くなった。。。orz
0641デフォルトの名無しさん垢版2016/09/18(日) 18:26:45.57ID:5S/llOjA
Goの型システムが貧弱とかよくdisられるけど
ジェネリクスが無い以外はわりとイマドキな言語だと思う
interfaceは構造的部分型付けっぽいし
既存の型に別名付けて拡張出来るし
0644 ◆SEdFBOkLSw 垢版2016/09/19(月) 01:20:18.20ID:uQftjblX
イマドキではないな。
既視感あふれる感じ。
レシーバで関数書いていけるのが1番気持ちいい。気が狂ってからのLispみたい。
チャンネルは凄く楽だし。

>>641
ジェネリクス、あったら良いなと思うけど、無くても、型名にいちいち名前つけて、適当にインターフェイスに参加させていけば、割としっくりくるスライスになるよ。
0646デフォルトの名無しさん垢版2016/09/19(月) 16:25:57.74ID:UScDXP8E
もちろん調べました。
revelとbeegoですね。
ただこれは重いらしいので、あと使用雑感とか日本人の意見を聞きたいのですが。
0647デフォルトの名無しさん垢版2016/09/19(月) 18:10:05.55ID:7Lx9kgsv
>>644
一応ジェネリクスは検討中ではあるんだよね。
結構あったらいいのにという場面はある。
それ以外は割といい感じ。エコシステムがいい。Editorも今や静的言語のメリットちゃんと享受できるし。
VSCいい。
0649デフォルトの名無しさん垢版2016/09/19(月) 20:43:34.00ID:UScDXP8E
あ、このスレたってから3年もたってるんですね
サボって使用雑感なんて期待しちゃいけない感じか
しょうがないから自分で検証してみます
0650デフォルトの名無しさん垢版2016/09/19(月) 23:21:43.10ID:7Lx9kgsv
>>649
ここには大した有識者はいないと思う。
かと言ってどこにいるんだろうね?twitterに投げてみるとか
0651デフォルトの名無しさん垢版2016/09/20(火) 00:29:26.51ID:dodRqZqD
サービスやってるとこので聞くのは、LL言語のフルスタックフレームワークから、SPAと軽量なapiサーバーへの移行みたいなのが多いイメージが。
なのでrubyからだと、sinatraっぽくmiddleware分離したいとか、migrationツールは別に用意みたいな話の方が多いかも。

http://blog.parse.com/learn/how-we-moved-our-api-from-ruby-to-go-and-saved-our-sanity/
https://www.slideshare.net/yujiotani16/gorevel-51949206
https://developers.eure.jp/go-language/advent-calender-7/
0654デフォルトの名無しさん垢版2016/09/21(水) 12:36:40.08ID:bQEJ8r3q
重いかどうかが問題になるレベルまで試すのは現実的に無理があるだろ
まあそもそもほとんどのアプリは使っている言語やフレームワークが重いかどうかが問題になる前に消えるわけだが
0658デフォルトの名無しさん垢版2016/09/21(水) 16:03:39.59ID:1PEot0Hq
ID変えて自演してるような気もするけど
ベンチマーク取れば重いかどうか数字で表せるよね
0660デフォルトの名無しさん垢版2016/09/21(水) 18:46:11.33ID:K/wMuhbh
>>657
そのリストじゃRails風かどうかまではわからないからな
それを調べるためだけに1個ずつインストールしてまで使う労力を求めてる不親切なコミュニティだわ
まあそれが日本でのGoのあり方なんだろうが
0663デフォルトの名無しさん垢版2016/09/21(水) 23:06:50.01ID:C/0XZtBi
ActiveRecordのつくり込みしてない実装は意外と面倒だったりするんだけど、goで使ったことないのでわからん。
クエリービルダーなら何かあるかも。
複数テーブル使うこともないので、今のところDBまわりは簡単にDTOみたいな実装で済ましてる。
0667デフォルトの名無しさん垢版2016/09/22(木) 10:18:25.14ID:7A/wc93b
railsみたいなのがいいならrails使っとけばいいだろ?
なんでgolang使おうと思ってるの?
0668デフォルトの名無しさん垢版2016/09/22(木) 11:10:54.24ID:y4xL8ywB
Goは基本的にCなので、ゼロから作りこむような複雑な処理がそのまま移植できる。
Rubyだと、extensionをCで書かないといけなくなる。
0669デフォルトの名無しさん垢版2016/09/22(木) 11:24:25.38ID:sBPmoePF
goでDB扱おうとすると動的言語のほうが楽だと痛感するけどね
単純なテーブルに対するcrudなら構造体作って対応できるけど
joinしたりとかすることも考慮するとそうも行かない。
素直にrailsでいいんじゃね
0670 ◆SEdFBOkLSw 垢版2016/09/22(木) 13:36:58.94ID:3pIcfs21
ORM使うからじゃないの?
JOINして使う結果とJOINせず単独で使う結果はそれぞれ別の構造体になってしかるべきな気がする。
あんまRDB使わないけど。
集合検索結合集計なシステムと手続き型とオブジェクト型と関数型、どれ同士を組み合わせても、インピーダンスミスマッチは仕方ないんだから、どっちかで歩み寄らなきゃ何ともならんような。

階層型とばっかり組み合わせてるけど、言語側はわりと世代交代早いからDB側でストアド書いてるわ。
0673デフォルトの名無しさん垢版2016/09/22(木) 15:19:40.46ID:sug0rqOR
mvcではなくrails的なもので高速という話なら、goで探すよりphoenix framework/elixerみたいなのを先に触った方がいいのでは。
0675デフォルトの名無しさん垢版2016/09/22(木) 15:32:16.50ID:sBPmoePF
RDBからKVSに行ってやっぱRDBがいいやと言う流れじゃないの?
mongodbとか使ってるやついるのか今
0676デフォルトの名無しさん垢版2016/09/22(木) 21:41:56.84ID:sBPmoePF
>>670
結局ビジネスロジックをどっち側に寄せるかという話になるんだろうけど
ストアドプロシージャは素朴なコードしかかけないから抽象化しづらいと思うんだけど
書いたことがないから想像でしかないけど。

でもgolangの場合は抽象化しきれないからストアドプロシージャ側にロジックを寄せて実装はありなのかもしれない
0678デフォルトの名無しさん垢版2016/09/22(木) 22:24:25.35ID:7A/wc93b
phoenixも速いよ
pingだけだったらレスポンスμsで返ってくるよ
0680デフォルトの名無しさん垢版2016/09/23(金) 11:19:01.19ID:iqtk0HU6
>>679
多分だけどpureGoでkvs側もgo製のをつかってkvsも含めてワンバイナリにしたいってことなんじゃない?boltとか
0681デフォルトの名無しさん垢版2016/09/23(金) 14:15:45.15ID:Pu19XfH5
>>676
割と書けるよ。ただ、パワーバランスにもよるけど。
番号発行を伴う複数の関連するデータの保存や削除なんかはDBに任せた方が良い場合もそこそこある。
テキトーにORMで雑然と入れがちだけど、根本的にオブジェクトと行が一対一にならなければ、一対一の操作やらビューを用意すべきだと思う。
0685デフォルトの名無しさん垢版2016/10/04(火) 16:39:32.48ID:ZPmHgmj0
>L&RのKであり

冒頭からアホ丸出し
0686デフォルトの名無しさん垢版2016/11/02(水) 12:09:01.86ID:txovE4qH
Go言語のゆるキャラ何だよあれ。
ゆるキャラのデザインは言語の普及率に無関係じゃないと思うぜ。
0696デフォルトの名無しさん垢版2016/11/04(金) 20:23:44.63ID:m0/gbw+8
golangでググるとgolang-jp.orgが一番上にヒットするけど
これは公式で認められたサイト?
0697デフォルトの名無しさん垢版2016/11/06(日) 23:12:50.69ID:NZCpJm/D
非公式だろ
ライセンス的には著作権表示さえしてれば問題ないことになってる
でも日本語じゃなきゃダメって人にはGoはお勧めしない
0698デフォルトの名無しさん垢版2016/11/08(火) 13:10:36.86ID:afLUgDEA
別に日本語の情報も出揃い始めてるし
日本語onlyの人でもそろそろ使えると思う。
でもgolang-jpってコミュニティの中心に近い人が運用している感じがしないのが不安
0700デフォルトの名無しさん垢版2016/11/18(金) 18:19:10.73ID:0j66y/nm
日本語じゃなきゃダメって人はなでしこ以外選択肢ないんじゃね
Go言語という日本語以外の言語を扱おうとする時点でオワットル
0701デフォルトの名無しさん垢版2016/11/18(金) 19:29:14.49ID:e+81aozX
織田信長
0703デフォルトの名無しさん垢版2016/11/22(火) 10:24:50.70ID:uKd48bt3
日本語でググったり質問したり出来なきゃ使い物にならん
ってのは別におかしくない

最低限のマニュアルやエラーメッセージすら読まないレベルなら排除すべき
0704デフォルトの名無しさん垢版2016/12/21(水) 09:11:00.18ID:rs5TCfU6
ウイルススキャンで go1.7.4.windows-386.zip の go/pkg/tool/windows_386/trace.exe が Trojan:Win32/Skeeyah.A!rfn と判定されたんですけど、語検出だと思いますか?
0705デフォルトの名無しさん垢版2016/12/21(水) 12:34:37.87ID:UOM+5F1I
ウイルススキャンに何て名前のソフト使ってんだよ

自分の行動を明確にしないと、有用かも知れない情報であっても風説の流布と同じ扱いにされる事に早く気づけよ
0707デフォルトの名無しさん垢版2016/12/21(水) 16:22:35.54ID:rs5TCfU6
>>705
MSEです
指摘ありがとう
今後気を付けます


>>706
そこで試してみます
ありがとう
0708デフォルトの名無しさん垢版2016/12/22(木) 04:50:05.52ID:jVrDGj21
>>705-706
結果を報告します
ダウンロードしたgo1.7.4.windows-386.zipのSHA256のハッシュはサイト上のものと一致しました
zipを展開しtrace.exeだけをVirusTotalにアップロードしました
ウィルススキャン56個中13個がTrojan判定したみたいです、多数決という考え方でいえば誤検知だったのだと思われます

https://www.virustotal.com/ja/file/cd4b6551da15d172a61f4cefcbba77c0fde1932fee9ab0879cb1cf126a5d39fd/analysis/1482349209/
0713デフォルトの名無しさん垢版2016/12/24(土) 15:25:12.26ID:Y/bvEAMg
>>712
これいいね
ありがとう
0714デフォルトの名無しさん垢版2016/12/25(日) 16:55:37.58ID:MSs3MIcU
>>708
そのリンク先の「最新を表示」をクリックすると、56個中24個に増えるね。
誤検出なら減っても良さそうな気がするが……。
0721デフォルトの名無しさん垢版2017/01/11(水) 19:06:49.30ID:AM+tjFEn
歌舞伎座.tech#13「Elixir 勉強会」
2017/01/11(水) 開場:18:57 開演:19:00  ニコニコ生放送
lv286846512
0724デフォルトの名無しさん垢版2017/01/18(水) 21:03:54.63ID:xMB+Qmdf
>721
webサーバーや常駐プロセスならelixir、システム系やバイナリならcrystalかな。
golangはどちらも増えてきたな。
0725デフォルトの名無しさん垢版2017/01/20(金) 14:22:52.01ID:uizqycjV
list = [["a",1],["b",2],["c",3],["d",4],["e",5]]

こんな配列を作りたいのですが

pythonだったら
list = []
list.append(["a",1])
list.append(["b",2])
とすればできるのですが
GOではどうやればいいのでしょうか?
0727725垢版2017/01/20(金) 17:00:33.53ID:uizqycjV
>>726
どうもありがとうございます。
map[string]int か []structも調べてみます。
0728sage垢版2017/01/22(日) 00:26:49.27ID:JSjE+wfT
流行りの機能あんまり無いし使い辛そうと思ってたが
書いてみるとしっくりくるな、良く出来てる
0729デフォルトの名無しさん垢版2017/01/22(日) 01:48:56.85ID:EXKusZK8
流行りの機能を実装するのに流行りの機能を使ったかどうか考えたら自明よだよ。
クリスマスツリーの飾りか、彼らが本気で必要だと言うなら自転車の補助輪みたいなもの。
0733デフォルトの名無しさん垢版2017/01/24(火) 23:06:50.70ID:c6xhurTC
>>729
> 流行りの機能を実装するのに流行りの機能を使ったかどうか考えたら自明よだよ。
これ停止条件どこですかね、天地創造?
0734デフォルトの名無しさん垢版2017/01/25(水) 09:47:48.89ID:QApusiWr
「CコンパイラはC言語で書かれている」みたいなことを言いたかったんじゃないかとエスパーしてみる。
0735デフォルトの名無しさん垢版2017/01/25(水) 10:44:53.45ID:JgDNrEDV
>>733
停止条件は、流行りの機能を使わない形での流行りの機能の実装、だろうね。
流行りの機能と言うから話がややこしくなるが、
ハンダゴテ作るのに、ハンダゴテ使って半田付けする必要があるのは、手順として間違ってるって事。
1.5より前のGoをコンパイルして、Go1.5でそれ以降をコンパイルするようなもん。
0738デフォルトの名無しさん垢版2017/02/01(水) 17:37:29.24ID:+X2jALUV
あの、golangでwebサイトを作る場合って
作った数だけ
go run hogehoge1&
go run hogehoge2&
go run hogehoge3&
こんな感じで裏で実行させておくんでしょうか?
0740デフォルトの名無しさん垢版2017/02/02(木) 11:20:33.63ID:nnsBzBvb
goアプリのデーモン化ってデファクトスタンダードそろそろ出た?
supervisor使うのが一番ラクかな未だに
0741デフォルトの名無しさん垢版2017/02/17(金) 10:38:39.08ID:w6Mwd8Yg
Go 1.8です
LinuxでGOROOTを設定する理由はこれで合ってますか?

・/usr/local/go以外の場所にインストールする場合。例えば~/local/goとか。
・異なるバージョンのgoをインストールするとき。GOROOTを切り替えることでバージョンの異なるgoを切り替えられるから。

あとGOPATHはデフォルトだと~/goを使いますよね。
1つのgoしか使わない場合とか、異なるバージョンのgoで~/goを共有するならGOPATHの設定しなくてもいいですか?
0742デフォルトの名無しさん垢版2017/02/17(金) 16:12:14.19ID:yGnzX63H
はい
0743デフォルトの名無しさん垢版2017/02/17(金) 19:02:09.98ID:W71R9C1F
n := 1.0
fmt.Printf("%f\n", n) // 1.000000
fmt.Println(n) // 1

1番目の出力、何で1.0じゃなくて1.000000なんですか?
2番目の出力、何で1.0じゃなくて1なんですか?
0744片山博文MZ ◆T6xkBnTXz7B0 垢版2017/02/17(金) 19:42:06.34ID:MbV+Py5H
>>743
コンピュータでは数値は内部表現で表されている。内部表現では10.0も10.00も同じデータだ。
その数値の内部表現に対してPrintf,Printlnがその形式で出力するように設計されているから。
もし好きな形式で出力したいならPrintfの書式を調べればよい。
0745デフォルトの名無しさん垢版2017/02/18(土) 01:11:54.03ID:pMCaQLyx
そういうものなのかわかりました
0747デフォルトの名無しさん垢版2017/02/18(土) 17:55:40.13ID:OtEeuMsz
go get -u hogehoge/hoge/hoge
だとbinにコマンドが入らなくて
go get -u hogehoge/hoge/hoge...
だと入るんですが
...ってなんですか?
0748デフォルトの名無しさん垢版2017/02/18(土) 18:32:44.27ID:HTn/aT5C
version1.8が出たらしいね
>>704-708の問題はどうなったんだろ?
0750デフォルトの名無しさん垢版2017/02/19(日) 11:12:55.70ID:hWiEfeI5
>>749
先輩ありがとうございます
0751デフォルトの名無しさん垢版2017/02/21(火) 00:38:10.56ID:gQJwpX7p
これ実行すると1と表示されますが
var i []int
if i == nil {
fmt.Println(1)
}

これだと1が表示されません
i := []int{}
if i == nil {
fmt.Println(1)
}

var i []intを:=バージョンで宣言したいんですがどうやって書くんでしょうか?
0756デフォルトの名無しさん垢版2017/03/02(木) 10:36:42.56ID:TnPaXq7u
Goってエンコード/デコード処理って標準で入って無いのな
読み込んだShift-jisデータが文字化けしててさ、デコードどうすんだろうって
調べたらstringsメソッドにも無いし標準パッケージにも無くて、
えっ?えっ?って困惑しながら調べてたら外部パッケージ使うんだってね

ええ?エンコード/デコードなんて標準で入ってて当たり前じゃん、どうなんてんのよとブツブツ言いながら
佐和子は外部パッケージの使用例を見てみるのであった・・
佐和子はまた驚いた「なにコレ・・デコードするだけで何でこんなに書かないといけないの!?」
Pythonを少しかじっている佐和子にとってデコードはhoge.decode('utf-8')という退屈な一行なのであった
佐和子は涙した、「あたし、Go無理かも・・なんて面倒なの・・グスン」悲しむ感情とは裏腹に
股間も濡れていることにまだ気づかない佐和子なのであった
0759デフォルトの名無しさん垢版2017/03/02(木) 16:29:39.78ID:X4z0kGE4
やる気がないgolang.jpとgolang-jp.orgは今すぐサーバをシャットダウンさせるべき
個人で翻訳し綴られるわけないのに
やるならオープンな場で活動するべき
0761デフォルトの名無しさん垢版2017/03/05(日) 22:36:40.86ID:S4MzRoP3
rubyのbundleみたいにプロジェクトごとにパッケージを使いたいので公式っぽいdepを使おうと思いました
何か自分がこれから書くソースコードもGOPATH以下のsrcに書かないといけないようなんですが
これってdepを使うからこういう決まりってわけではなくgolangだからこういう決まりになってるんでしょうか?
0762デフォルトの名無しさん垢版2017/03/05(日) 22:46:59.76ID:Y02SgW6x
そうだよ
0765デフォルトの名無しさん垢版2017/03/09(木) 09:56:41.81ID:06AYmq+V
rubyの配列や文字列、正規の色々細々便利関数みたいな、JSのアンダスコアみたいな
そういう汎用ライブラリ(か自前関数)はGo言語は持っているのでしょうか
0770デフォルトの名無しさん垢版2017/03/11(土) 07:32:20.09ID:2HZNdoI4
2000年代初期に

変数名: 型

より

型 変数名

の方がしっくりくるだろ、、、って言ってたの同じじゃね

偉い人は人間工学的に良いって言って、凡人は慣れたら前者が無条件に良く見える
慣れない老害はワカモノにバカにされるといいよ
0771デフォルトの名無しさん垢版2017/03/11(土) 08:24:56.74ID:3yr+jwLv
英語圏では常に自分が中心の個人主義故に主語は大抵自分自身になるわけ
つまり←chanというのは、「チャネルから私へ」となり受信
同様にchan←というのは、「私からチャネルへ」となり送信

という完璧な回答を佐和子はニヤニヤしながら書いたのであった
0772デフォルトの名無しさん垢版2017/03/11(土) 08:52:31.22ID:50ajbFL2
variant (as) Type
みたいなのじゃないの?
パスカルもそうだし、あながち新しいもの独特って訳でもない
0773デフォルトの名無しさん垢版2017/03/11(土) 08:57:14.88ID:3yr+jwLv
>>771の訂正と補足
うーん、主語というか、とにかく「私」が隠れてるんや! 英語圏は私!私!の文化やねんから!
日本では子供に合わせてパパは妻の事をママっていうねん、視点子供に変わったりするねん
でも英語圏ではそんなことないねんって、視点は常に自分自身やねんって

チャネルが送ってる先は「私」やねん ←chan だから受信やねん
チェネルに送ってるのは「私」やねん chan← だから送信やねん
0776デフォルトの名無しさん垢版2017/03/20(月) 15:12:26.30ID:CYCZfEEr
グロ中尉
0778デフォルトの名無しさん垢版2017/03/21(火) 23:10:22.44ID:uzSvvu2S
公式のサイト見て驚いたけどUnicode文字の例として日本語が使われてるのな、なんか意外だ
0779デフォルトの名無しさん垢版2017/03/22(水) 00:13:24.31ID:9PE4AFjh
https://play.golang.org/p/FoAcpJwOTh

appendでの容量の増え方に何か法則があるのでしょうか?(2倍にされる場合もあってちょっと怖いです)
0781デフォルトの名無しさん垢版2017/03/22(水) 03:56:14.98ID:9PE4AFjh
>>780
d
1024以下は2倍でそれ以外は1.25倍で増やしてくのか
0783デフォルトの名無しさん垢版2017/03/23(木) 13:15:39.80ID:U7xuC5Fy
言語選択のアイコンが[aあ]になってるサイトもあったな。
選択肢には日本語なかったけど。
0784デフォルトの名無しさん垢版2017/03/23(木) 16:14:28.11ID:9ddE+onE
SwiftのApple公式チュートリアルページのUnicode絵文字サンプルは寿司
中国、韓国は頑張れ
0785デフォルトの名無しさん垢版2017/03/23(木) 17:51:06.97ID:9n/hT6SR
JavaのAPIドキュメントは日本語版が用意されてくらいだから
世界のIT業界にとって日本は大事な顧客様なのだろう
0787デフォルトの名無しさん垢版2017/03/23(木) 19:38:53.40ID:fky8z8fA
日本のIT業界ってマイクロソフトに固執してるイメージあるからじゃないか。
アンドロイドのIMEは中華製って感じがする。
0788デフォルトの名無しさん垢版2017/03/24(金) 19:16:22.29ID:213lDDdv
Windows10でVScode-go環境を作ったんだけど、コード補完が遅すぎて使えなくなってます。

変数名打って、型名書いてたらいきなり補完が効いて変数名の最後の数文字が消えたり、コメント書こうとしたら、//部分が突然削除されたり等…

最初はgocodeのautobuildが悪さしてるのかと思ってsetting.jsonからfalseにしても効果はなく……

誰か、go言語で同様の症状に陥った方は居ませんか?
環境は

Windows10
go 1.7.5(最初は1.8でも同様の症状が出てバージョン下げたけど意味なし…)
VSCode1.10.2
Git2.12.0
Go拡張0.6.55(多分最新版)
各種ツール(最新版)

です。
色々調べたけど正直お手上げなので、誰か解決方法を知ってたら教えてください…
0789デフォルトの名無しさん垢版2017/03/24(金) 22:53:28.10ID:frT9Zhqz
なんでその質問をこのスレでしようと思った?
0791デフォルトの名無しさん垢版2017/03/25(土) 01:06:24.19ID:SfvzpHLw
英語苦手なのと、この板とソフトウェア板にVScodeスレが見当たらなかったからです

あと、似た症状を起こした人が居たらしく、どうもそのissueを読む限りgocodeのautobuildが原因じゃないかと言われていたので試してみたり、vscodeのsetting.jsonの設定を変えてみたりしたのですが、結果は改善しませんでした…
ttps://github.com/Microsoft/vscode-go/issues/696

このスレにこの症状についてわかる方が居ないようでしたら…意を決して聞くつもりです
0796デフォルトの名無しさん垢版2017/03/25(土) 15:10:30.58ID:SfvzpHLw
>>793
ちょくちょくcloseを実行してアップデートを繰り返してみましたがだめでした…

>>794
あ…すみません…あったんですね…


あの後、色々試した結果
自動保存を切るとどうやら調子が良くなるみたいです
go fmt相当の機能が自動保存を付けているとかなりの頻度で実行され、それがコードを書くのを妨害していると思われます
自動保存なんてオプションを興味本位でONにしていたのが行けなかったのだと思います…
コードが書き終わった後にctr+sで手動で保存するようにすればなんとか使えるようになりました

ご協力ありがとうございましたm(_ _)m
0797デフォルトの名無しさん垢版2017/03/25(土) 15:11:17.55ID:5MnOmzEx
合唱コンクール
0798デフォルトの名無しさん垢版2017/03/25(土) 19:04:15.43ID:axug6RQN
自己解決したからってIssueに投げなくていいわけじゃないぞ
ちゃんとIssueでバグ報告しとかないと
0803デフォルトの名無しさん垢版2017/03/28(火) 15:18:18.42ID:9WCU6g+e
使ってないですねえ
0805デフォルトの名無しさん垢版2017/03/28(火) 15:47:02.89ID:XYMZoduR
人柱向けなので、人柱が居ないか聞いてみたんだと思う……
それまでのプラグインよりも良いという「らしい」から
0807デフォルトの名無しさん垢版2017/03/28(火) 23:47:54.70ID:wrx/BE3m
言語ごとにエディタ変えるよりオールインワンがいいねん
0809デフォルトの名無しさん垢版2017/03/29(水) 11:37:06.05ID:e2+Szx9c
いまのところ、エディタ+実行環境ぐらいしか使ってないので、
Ideaのプラグインの頃との違いがあまり分かってない。
liteideもそのぐらいしか使ってなかたったけど。
0810デフォルトの名無しさん垢版2017/03/29(水) 11:45:26.94ID:UMeevNqB
>>807
vimとemacsが仲間にして欲しそうにこちらを見ている

言語ごとの文法に慣れたら、言語ごとのIDE/エディタも慣れると思ってた時期が俺にもありました
環境は変わるとホント辛いよね
0813デフォルトの名無しさん垢版2017/03/30(木) 18:14:38.97ID:tZ7gdWKd
LiteIDEってGoで書かれているわけじゃないんだね。
ずっとGoで書かれているんだと思ってた。。。
0818デフォルトの名無しさん垢版2017/04/21(金) 23:13:42.55ID:DOzdPvj8
rubyのbundleかpythonのvenvみたいなのが欲しい
depはいちいちプロジェクト毎にGOPATHを書き換えないといけないからだるい
0822デフォルトの名無しさん垢版2017/04/27(木) 23:04:18.01ID:Q8g/twyk
delve入れて IntelliJ IDEA でデバッグしようとしたんだけどなぜかパニクる、同じようなこと起こってるひといる?
0824デフォルトの名無しさん垢版2017/04/30(日) 12:43:49.05ID:YASP0NOm
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
0825デフォルトの名無しさん垢版2017/04/30(日) 19:15:55.71ID:Kng/Djib
…がないとebitenパッケージしかgetしないってことだと思う。
exampleとかebitenutilもgetしたいなら…つけるんじゃないか。
0826デフォルトの名無しさん垢版2017/05/02(火) 18:24:35.45ID:Wqf9gHHS
>>749
0827デフォルトの名無しさん垢版2017/05/03(水) 08:31:28.68ID:O89wJViE
遅ればせながらshibukawaさんのnanovgo demo sampleってやつを
ubuntu 16.04上で動かしてみたけど、これいいね
巷での評判はどうなの?
0829デフォルトの名無しさん垢版2017/05/03(水) 20:02:29.02ID:O89wJViE
>>828
windows10でもやってみた
結構いろんな環境で動きそうですね
goはやはり1.8.1
0830デフォルトの名無しさん垢版2017/05/05(金) 13:35:23.32ID:P7YKsBwJ
>>829
同じマシン(i5 第3世代、HPデスクトップ)で速度を比較してみると
windows10: 130-140 FPS
ubuntu 16.04: 125付近 FPS
で、あまり違いはなかった
0831デフォルトの名無しさん垢版2017/05/05(金) 13:43:01.75ID:P7YKsBwJ
>>830
おっとまた忘れた
画面の解像度が速度に大きく作用するので、その記載
ここでのテストは 1920x1080でした
0832デフォルトの名無しさん垢版2017/05/06(土) 13:38:13.01ID:e8GUuuYA
>>831
別のマシン(i5-4590S)で Windows 10 (Creators update、上も同じ)
380-400 FPS

第4世代と第3世代の差は圧倒的だは!
0833デフォルトの名無しさん垢版2017/05/06(土) 13:45:33.58ID:xfCUj8G0
おつ
0834デフォルトの名無しさん垢版2017/05/16(火) 00:10:12.72ID:jyI5CijS
goにもnilを許容しない変数定義できるようになって欲しい。
typeScriptとかになれるとnilになるとコンパイラが指摘してくれんだろという思い込みがgoで書く時に問題になる。実行時エラー出しまくりw
0835デフォルトの名無しさん垢版2017/05/16(火) 18:53:07.01ID:18D2gyoZ
Rustでもやれば
0836デフォルトの名無しさん垢版2017/05/17(水) 11:26:01.95ID:8ydAfzFN
Rustとかになれると変数値破壊するとコンパイラが指摘してくれんだろという思い込みがGo, TypeScriptで書く時に問題になりそう
JavaやSwift(ObjC)みたいなnilable修飾詞はあっても良いかもねぇ、どうしても欲しいと言う機能でもないけど
0837デフォルトの名無しさん垢版2017/05/17(水) 22:28:30.66ID:sVDcp3Zu
rustのほうがコンパイラがより親切ってこと?
goのエコシステムが好きだから、今のところはrustを試そうとは思わないなぁ。

goのnilって型がありつつnlみたいな状態とただのnilって違うし
そういう混乱があるから
nilを許容しない方向に進んだほうがより直感的になる気がする。
0838デフォルトの名無しさん垢版2017/05/20(土) 09:48:00.81ID:POYpVYoy
rustのエコシステムはgo並みに親切だけど、コンパイラはドSだからやめた方がいい
試した所でgoやtypescriptのコンパイラのゆるさを見直すだけだよ

goのnil, nlはまぁ混乱するからどっちかだけにして欲しくはある
0839デフォルトの名無しさん垢版2017/05/25(木) 22:23:56.33ID:gYX5/I4W
Goをはじめてつかってみたけど
Goの良さを生かせるプロジェクトってすごく限られてるよな
0841デフォルトの名無しさん垢版2017/05/26(金) 01:11:35.38ID:ZNc2U8qB
go脳裏ってgoroutineだしね。並行処理したいってなければphpでいいのかもね。
俺的にはkotlinに行ってみようかな。
0842デフォルトの名無しさん垢版2017/05/26(金) 10:53:21.83ID:gvIQ5llv
go versionしてもバージョンがすべて表示されないんですけど
1.8.1なのか1.8.3ナノ化マイナーバージョンまで調べる方法教えてください
0843デフォルトの名無しさん垢版2017/05/27(土) 00:13:43.62ID:RKgIRc4T
Goの人間に期待してない感じ良いと思う
バカでもある程度同じ書き方になるみたいな
0844デフォルトの名無しさん垢版2017/05/27(土) 03:53:53.40ID:KIGprW1f
メソッドでnilが来て死

func (h *Hoge)foo() int {
return h.bar + h.baz
}
0846垢版2017/05/27(土) 09:39:16.58ID:sEq8ObI0
>>843
palmのgraffitiみたいな感じで、歩み寄れというメッセージ感じるな。
0850デフォルトの名無しさん垢版2017/05/27(土) 21:59:50.58ID:KIGprW1f
ポインタのレシーバーは常にnilチェックがいるのか
面倒だな
0853デフォルトの名無しさん垢版2017/06/07(水) 12:39:27.11ID:ayFCuqeB
こういうのいっぱいつくればできるのかな?

func server8081() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8081", nil)
}

func main() {
server8081()
}
0855デフォルトの名無しさん垢版2017/06/08(木) 11:31:34.32ID:RTYYoCEV
なんとなくだけどdepが今後オフィシャルツールになると見込んでdepしか使ってないけど
GUIライブラリも手放した過去があるからGoogleを信用してはいけないよな
glideも覚えるべきか
0856デフォルトの名無しさん垢版2017/06/09(金) 16:50:45.42ID:T5+k/E3o
v := flag.Int("v", 0, "v")
flag.Parse()
fmt.Println(*v)

var v string
flag.Int(&v, "v", 0, "v")
flag.Parse()
fmt.Println(v)

このvはなんの違いがあるんですか?
0857デフォルトの名無しさん垢版2017/06/09(金) 22:09:41.77ID:TYDzsVxx
型が違うという話?
0858デフォルトの名無しさん垢版2017/06/11(日) 19:32:55.88ID:h1hPlu9T
getchみたいなのって標準機能じゃ出来ないんですか?
ぐぐるとc使ったりOS付属のコマンドを使うやり方しかないんですがこういうものですか?
0860デフォルトの名無しさん垢版2017/06/15(木) 22:00:13.66ID:w0F6tV0E
メモリ確保するとき

hoge := make(map[string]int)

hoge := map[string]int{}

ではどっちのほうがよいの?
0862デフォルトの名無しさん垢版2017/06/21(水) 10:29:13.06ID:CAzvCkNY
>>861
バッチ処理で複数Workerに作業させたいとか
そういうのに使うために一度Gorutine使ってからは、あんまり使わんな。
httpserver動かすと裏で動いてんのかな
0864デフォルトの名無しさん垢版2017/06/23(金) 21:14:31.74ID:6gEmwLmB
flagで引数を必須にする方法はないんでしょうか?
0871デフォルトの名無しさん垢版2017/07/07(金) 19:46:28.59ID:7JrZOF7d
暇職だけだよな
0872デフォルトの名無しさん垢版2017/07/10(月) 13:48:40.97ID:gqDySAuG
普段みんなどこいるの?
正直匿名じゃないとアホな質問とかできないから
ここが居心地いいんだよね。
teratailとかで下手にアホな質問書き込むとすごい叩かれるから凹む。
0873デフォルトの名無しさん垢版2017/07/10(月) 16:12:24.25ID:XvbOmo/f
今の時代は非匿名文化ですから
teratailで叩かれるような質問ならここでも叩かれますよ
むしろ2ちゃんに飽きてる層が多いから2ちゃんで質問しても回答もつきにくい
0874デフォルトの名無しさん垢版2017/07/10(月) 18:51:54.54ID:gqDySAuG
>>873
いや。叩かれるのはいいんだけど、
特定されて、こいつこんな質問過去にしてたんか。恥ずかし
ってなるのが怖くて質問できない。
専用アカウント作ればいいんだろうけど使い分けんのが面倒。
0875デフォルトの名無しさん垢版2017/07/10(月) 19:04:55.53ID:l6mkv8ve
誰だって最初は初心者なんだからビビらず
どこでだって質問しまくればいいのよ
0876デフォルトの名無しさん垢版2017/07/10(月) 20:44:54.88ID:e/A+ULgc
>>874
そんなの気にしてたらいつまでも成長しませんよ
アカウント作って質問するぐらいの労力より回答するほうが労力使うことを知ってくださいよ
さっさとteratailのアカウント作ってこい
0878デフォルトの名無しさん垢版2017/07/11(火) 21:07:45.10ID:aZj0SKJK
>>877
言語化するときに頭が整理されるからな
0884デフォルトの名無しさん垢版2017/07/17(月) 11:07:35.85ID:MkiOtZ1h
goスレは実質part3くらいだよ
0889デフォルトの名無しさん垢版2017/07/17(月) 19:23:15.17ID:stj3YUiZ
今日Goインストールしました、
ビルドしてexeファイル作るのまではできたけど、
Goで取ってきたデータを、
表示する、アプリみたいなのを作るにはどうすればいいの?
ほかの人のPCでアプリを実行できるようにしたいです。
0891デフォルトの名無しさん垢版2017/07/17(月) 20:40:18.36ID:stj3YUiZ
>>890
すみません、
初心者なので意味が分からないです、
でも、ありがとうございます。
0892デフォルトの名無しさん垢版2017/07/17(月) 20:44:48.16ID:HJdOjxBV
対話がチグハグすぎる。

質問者はwebから情報を取得して表示するアプリを作りたいと言っておる。

GUIアプリを作りたいと言っているんだろうか?
それとも、、、なんだろ?
0893デフォルトの名無しさん垢版2017/07/17(月) 20:50:45.38ID:stj3YUiZ
>>892
そうですそれです、
webから取得したデータを、
表示するGUIアプリを作って、
他の人のPCでも、簡単に実行できるようにしたいです、
今は、取得したデータを、
コマンドプロンプトに表示させるのしかできません。。。
0895デフォルトの名無しさん垢版2017/07/17(月) 21:06:12.58ID:stj3YUiZ
>>894
詳しい人でもあまりやったことないんですね、
アプリ作るの想定してない言語なのかな、
情報ありがとうございます、
そこ読んで勉強してみます。
0896デフォルトの名無しさん垢版2017/07/17(月) 21:11:10.65ID:HJdOjxBV
>>895
Goをやってる人って複数言語をたしなんでいるとこが多いから
GUIが得意な言語を使うと思う。
GoでわざわざGUIをやりたいというのは変態くらいだと思うよ。今のところ。
webアプリとかならありえるし
どういうアプリか知らんけどwebサーバとして動作させて
ブラウザで結果表示するとかが、まぁGoアプリとしてありえる範囲かと。
0897デフォルトの名無しさん垢版2017/07/17(月) 21:38:02.29ID:pfmhHyiC
GUIアプリのことだったのか、それは失礼
他の人が回答してるようにGoの得意分野じゃないから止めた方が良いね
0898デフォルトの名無しさん垢版2017/07/17(月) 23:43:30.10ID:qHGcXNCc
そういう用途ならWebアプリが一番無難だよね。つまりJavaScriptかAltJSの言語
0899デフォルトの名無しさん垢版2017/07/18(火) 00:42:33.52ID:L9UQruVY
>>887
すごく同意
0904デフォルトの名無しさん垢版2017/07/20(木) 16:06:01.17ID:TTDKN4T0
The Go Blog Toward Go 2
ttps://blog.golang.org/toward-go2

ようやくこれを読んだけど面白いこと発表したわけじゃないのな
何にも決まってないけどGo 2リリースに向けて手伝って!とか言ってるから信者は助けてあげればいいんじゃないかなぁ
問題提起だけでも助かるって言ってるからnull安全だのジェネリクスがないからダメって言ったら聞いてくれるはずだよ
0905デフォルトの名無しさん垢版2017/07/20(木) 16:14:08.52ID:hN2WxidD
そうそう、ダメダメなんて抽象的なこと言ってても放置されるだけだってね
具体的な体験レポートを提出して説得しろってさ頑張れよ
0906デフォルトの名無しさん垢版2017/07/20(木) 21:02:59.35ID:9ngnJ+y5
goってcode generete推奨って感じだけど
generete自体はtemplate文字列とか使ってて
ライブラリ開発者は辛い思いしてるよね。
(xoのテンプレートいじるの辛い)

だから時期パージョンではAST出力とASTからbin生成をサポートして欲しいな。
そうするとaltGoみたいのが作り安くなって言語ごとカスタマイズ出来るようになるし
0907デフォルトの名無しさん垢版2017/07/23(日) 02:23:00.81ID:22lpzJ7z
ジェネリクスの追加で、みんなハッピーになるのかな
仕様の変更や削減はいいけど、追加を最小限にとどめられるかが勝負だね

あと2進数リテラルは、重要だと思うんだけど、そんなことないの?
8進より、よほど役に立つと思うんだけど、8進リテラルって何か特種用途があるの?

ってか8進数なんて切り捨てて、アンダーバー付きの2進リテラルを追加した方が良かったと思うんだ
8進数なんて、誰が求めているのかよく分からないし、せめて0oにしてくれた方が・・・
こういうのを排除するのが、この言語の正しい姿勢だと思うんだけどね
0908デフォルトの名無しさん垢版2017/07/23(日) 16:17:42.71ID:knasDU4O
>>907
けっこう賛成
0909デフォルトの名無しさん垢版2017/07/26(水) 10:18:59.22ID:ENBFGRGX
>>907
合議制になるんだから提案してみたらいいんじゃない。
おれとしても賛成だよ。
個人的にはelixirのパターンマッチングでバイナリにもマッチングできる仕組みに感動して、
goでバイナリ操作したいならelixirみたいなパターンマッチング欲しいって思った。
ジェネリクスはほしいけどrustでいいかなって気もしてる。
0912デフォルトの名無しさん垢版2017/08/05(土) 12:25:03.33ID:ggnuHEiJ
ジェネリクスじゃなくていいから
interfaceの結合型が簡単に作れるようにして欲しい

func Xxxx(readWriter io.Reader & io.Writer)
func Xxxx(readerOrWriter io.Reader | io.Writer)

とりあえずinterface{} が 関数のパラメータになってるの辛すぎだからそこを解消して欲しいわ
0913sage垢版2017/08/07(月) 01:18:22.11ID:ncmD/ymY
ちょっと触ってみた

一撃でランタイムなくても動くバイナリができたときはびっくりした
0916デフォルトの名無しさん垢版2017/08/17(木) 01:04:47.91ID:5a8n6tS4
Go2ではコレクション操作の機能をもっと豊富に用意してほしい
forループ文だらけになるわ
0917デフォルトの名無しさん垢版2017/08/17(木) 01:23:28.75ID:lKqFMmqx
本当これ
mapとfilterよこせや
0922デフォルトの名無しさん垢版2017/08/17(木) 09:46:20.42ID:lKqFMmqx
>>919
ジェネリクスがないから型安全じゃなくなる
0923デフォルトの名無しさん垢版2017/08/17(木) 10:57:10.38ID:wX4L2Jep
>>922
くそ。やはりジェネリクスか。
goのエコシステムは好きだからrubyとかrustを使う気はないんだよなぁ。
generete使って実装追加するようなのならあるかな?
0925デフォルトの名無しさん垢版2017/08/17(木) 23:51:48.55ID:JDyXRi5Q
golangで2chに書き込めない
クッキーの設定エラーが出る。ヘッダに入れてるんだけどな
あとレスポンスのsjis to utf8は出来たけどリクエストをutf8 to sjisする方法が分からない
0926デフォルトの名無しさん垢版2017/08/18(金) 00:03:21.95ID:c33/jNGO
いきなりgolangで書き込むんじゃなくて
主導の対話通信(telnetあたり)で2chへ書き込んで通信の内容でも確認してみたらよいんでない?
0929デフォルトの名無しさん垢版2017/08/18(金) 00:17:02.43ID:bO8OoBBY
Set-Cookieが複数あったのが原因だった
すまん
0930デフォルトの名無しさん垢版2017/08/18(金) 00:44:00.14ID:bO8OoBBY
あ、書き込みは出来るけど文字化けするのか

>>926
node.jsでしかしたことなかった

>>927
>>928
http.NewRequest("POST", "https://";+params.server+".2ch.net/test/bbs.cgi?guid=ON", transform.NewReader(strings.NewReader(values.Encode()), japanese.ShiftJIS.NewEncoder()))
ってしてみたけど文字化けして書けない
0931デフォルトの名無しさん垢版2017/08/18(金) 01:33:09.70ID:bO8OoBBY
values.Encode()の時点でURLエンコーディング(UTF8)されるからそれをSJISにしても意味ないのか
やっと原因分かった
0932デフォルトの名無しさん垢版2017/08/18(金) 01:45:45.20ID:bO8OoBBY
SJISのURLエンコードを出来るライブラリが見つからないのですが、何かないですか?
0939デフォルトの名無しさん垢版2017/08/18(金) 11:29:59.19ID:vRHq3miw
別に立場変わらずgoにgenericsはいらないって主張してるでしょ

genericsが必要だって主張してる人たちが
Go2ならgenericsを採用してくれる機会があるはず!って盛り上がってる(?)だけで
ついでに例外とAssertも盛り上がってくれねぇかな
0940デフォルトの名無しさん垢版2017/08/18(金) 11:33:40.78ID:+X0+m8dy
個人的にはinterface{}型が関数パラメータに多用されてしまう状況を改善してくれるだけでいい。
例外は別に無くてもいいかな。
0942デフォルトの名無しさん垢版2017/08/18(金) 12:09:30.77ID:bO8OoBBY
url.Valuesに突っ込むキーと値をsjis化したら文字化けせずにpost出来た

>>941
itestAPIならutf8だけどそれ以外面倒だよな
0944デフォルトの名無しさん垢版2017/08/18(金) 19:03:33.52ID:PB7aU8rD
>>943
違うよ
そのスレ初めて見た
0946デフォルトの名無しさん垢版2017/08/25(金) 16:47:51.80ID:a5MHugSq
ついに1.9!
もう少しで2.0やん
0948デフォルトの名無しさん垢版2017/08/25(金) 19:08:15.57ID:a5MHugSq
あ、そっか
0951デフォルトの名無しさん垢版2017/08/26(土) 01:02:11.77ID:UaCnfxPk
>>950
何その言語
0955デフォルトの名無しさん垢版2017/08/26(土) 10:49:06.08ID:gyHjYOL6
Documentation - The Go Programming Language
https://golang.org/doc/
0958デフォルトの名無しさん垢版2017/08/27(日) 08:21:25.17ID:gv0iyIef
今更だけどGoglandアプデしたらmainパッケージ内で複数ファイルのビルドができるようになてた

言語専用のIDEがあるって理由で使ってる人はあんまりいないか
俺の開発の8割はIDEに支えられている…
0959デフォルトの名無しさん垢版2017/08/27(日) 11:36:53.98ID:Fy+qgg0G
GOPATH=~/goって設定してるんですけど
depを使うようになったのでGOPATH=~/foo:~/goな風に設定したんですよ
これでdep ensureすると自動的に~/foo/以下の適当な場所に人様のパッケージがインストールされるんですが
binコマンドが生成されないんです
depを使わずgo getでインストールするとbinコマンドが生成されるんですがdep使ってインストールしたらbinコマンドが生成されないんでしょうか?
例えばhttps://github.com/spf13/cobra
0966デフォルトの名無しさん垢版2017/09/24(日) 05:52:40.41ID:Kg+0Au0P
友達探しにコミュニティに参加するつもりでいて
気持ち悪いと思うのなら参加しなければ良い

技術的な事をもっと深く知りたくて
コミュニティに参加したいと思ってるなら
人見てコミュニティ選んでるコミュ障のお前の方が気持ち悪い
0970デフォルトの名無しさん垢版2017/09/28(木) 12:31:06.65ID:h8WKWHlz
type fSlice []float64
var pool = sync.Pool{
  New: func() interface{} {
    return make(fSlice, 0, 100)
  },
}
go func(){
  n := pool.Get().(fSlice)
  ...
  pool.Put(n)
}()
20回に1回くらい
panic: interface conversion: interface {} is *main.fSlice, not main.fSlice
pool.Get().(*fSlice)なんてすると
panic: interface conversion: interface {} is main.fSlice, not *main.fSlice
で仕方なく
n,ok := pool.Get().(fSlice)
if !ok {...}した時に気づいたのだけど、Falseでも下の処理には影響しない
Falseだと100回のappendで何故かCapが128になる(Trueだと100)
この謎分かる?
0971デフォルトの名無しさん垢版2017/09/28(木) 13:36:21.42ID:h8WKWHlz
原因分かりました
pool.Put(n)の所、端折って書きましたが、実際はresetメソッド作ってそっちで(*n)[:0]してましたが
func(f *fSlice)reset(){
  *f= (*f)[:0]
  pool.Put(f) → pool.Put(*f)にすべきでした
}
サーセン
0972デフォルトの名無しさん垢版2017/11/11(土) 00:39:24.57ID:LLMRc4SD
質問です。
先日始めたばかりでデリファレンスの仕方が分からなくて困ってます。
超初歩的ですが教えてください。

コードは以下と同類です。
http://go-database-sql.org/varcols.html

これの dest:= の部分を

th := []interface{}{ new(int), new(string), new(string)}

にして読み込んだところ、
確かにポインタのスライスになっているようなのですが、デリファレンス出来ません。
(単に書き方が分からないだけですが)
試した結果は以下です。

fmt.Println(*th[0], " ", *th[1], " ", *th[2]) // invalid indirect of th[0] (type interface {})
fmt.Println(*(th[0]), " ", *(th[1]), " ", *(th[2])) // invalid indirect of th[0] (type interface {})
fmt.Println(th[0], " ", th[1], " ", th[2]) // 0x11f09b08 0x11ea1468 0x11ea1470
fmt.Println(th) // [0x11f09b08 0x11ea1468 0x11ea1470]

よろしくお願いします。
sqlx使ってもいいのですが、そもそもデリファレンス出来ないのがよく分かりません。
0973デフォルトの名無しさん垢版2017/11/11(土) 07:08:21.29ID:qi+awpQj
>>972
Goにとっては、要素がポインタではなくてただの interface{} に見えている。
なのでデリファレンスできないというエラーになる。

方法としてあるのは、th := []*interface{}{...} にする方法。
ポインタの配列と宣言しているので、要素のデリファレンスが可能。

もしくは、要素ごとに、デリファレンスする前に、*intとかに型アサーション(ググって)をする。
その後でデリファレンスする。
0974デフォルトの名無しさん垢版2017/11/11(土) 09:52:19.27ID:LLMRc4SD
>>973
最終的にはいけました。ありがとうございました。

> th := []*interface{}{...} にする方法

th := []*interface{}{new (int32), new(string), new(string)}
// cannot use new(int32) (type *int32) as type *interface {} in array or slice literal: *interface {} is pointer to interface, not interface
// cannot use th (type []*interface {}) as type []interface {} in argument to rows.Scan

これは駄目でした。new (int32)がポインタ配列に何故か入れられないという謎仕様?
全ての型はemptyインタフェース interface{} を実装しているのに、
全てのポインタ型はemptyインタフェースへのポインタを実装してない?
(rows.Scanでは受けられないというのはこちらの話ですが)
まあ今の段階ではよく分かりません。

> 要素ごとに、デリファレンスする前に、*intとかに型アサーション

fmt.Println(*(th[0].(*int32)), " ", *(th[1].(*string)), " ", *(th[2].(*string)))

こちらはいけたのですが、しかしこれではなあと。個別べた書きでは意味無いんですよね。
本当は構造体で受けたいのですが、sqlxしかないのかなあと。
(sqlxは内部で使用しているであろうリフレクションが遅そうでいや)

Goはリフレクションが遅くないとかいう落ちってあります?
リフレクション用のタグを別装備しているし、静的にリフレクションしてたりします?
というか動的言語(PHP/JavaScript)からの移植がこんな初歩的なところで躓くのは想定外でした。
動的言語前提の構造になっているとかなり辛いですね。
json周りでも同様のことが想定されますし、そのための型スイッチってのも何だかなあ、という気がします。
愚痴になってしまってすいません。
0975デフォルトの名無しさん垢版2017/11/11(土) 11:11:10.62ID:rrUNs59d
new している意味がよく分からないけど、予め変数を割り当ててしまえば良いような?

rows, err := db.Query("select id, first_name, last_name from users")
:
var (
id int
firstName, lastName string
)
rows.Next()
err = rows.Scan(&id, &firstName, &lastName)
:
0976デフォルトの名無しさん垢版2017/11/11(土) 13:21:37.63ID:Zhof0cH3
>>975
それだとDBのレコード個別にコードが必要になる。
だから当然困るし、当然同じように困っている人も居て、ググると出てくる。
https://stackoverflow.com/questions/17840963/create-a-map-in-golang-from-database-rows
それでsqlxなのだが、見る限りこれ裸のGoでも出来るのではないかと思って試していたわけ。

newしている意味はない、というか見ての通り今は文法もあやしいので、
動くコードを探してそこからスタートしてる。

ただそもそもsqlでレコードをいちいち走査することもないから、やりたいのはまさにsqlxのこれで、

> pp := []Place{}
> err = db.Select(&pp, "SELECT * FROM place WHERE telcode > ?", 50)
> http://jmoiron.github.io/sqlx/ より抜粋

何故これが標準でないのかがよく分からない。
(ついでに言えば三項演算子がないのも変だと思うが。)

とはいえ、自前でsqlxバリの環境を整えるなら結局リフレクションしか(多分)なく、
これが静的言語の限界というか当然で、それならsqlxを使った方が多分マシ。
楽して速い言語かと期待していたが、正直プログラミングレベルはCと大して変わらないし、
1970年代で止まっている言語と揶揄されるのも分かる。
C+GC+型システムと考えた方がいいのかなこれは。
0977デフォルトの名無しさん垢版2017/11/11(土) 13:33:59.14ID:proXGFSN
phpと同じ感覚でgoでdatabase使おうとすると死ぬよね。
結局go側とsql側のスキーマ二重管理になるから、そのままphpと同じノリで使えない。動的言語と静的言語の差だね。

じゃあどうするかというとsql側のスキーマからgoの構造体をコード生成する。
xo とか使う。

http://tdoc.info/blog/2016/07/06/xo.html
0978デフォルトの名無しさん垢版2017/11/11(土) 13:51:58.52ID:LLMRc4SD
>>977
自動コード生成ツールか。まあPHPとGoを同時使用するのならありでしょうな。
ただまあ、俺の場合はそうではなく、Go内で二重管理するのが気に入らない。

俺が試しているのは掲示板なんだが、PHPの場合は結局、

echo json_encode(fetch_all($db,"SELECT * FROM threads;")); // fetch_allは全読み関数

だからリード側はDBの型依存が全くない。(何が入っていても中身を全部吐き出すだけ)
結果、新規機能追加の場合はライト側の変更だけでよく、変更は1箇所で済む。
Goだとリード側も変更が必要になるのが気に入らない。
だから構造体に押し込んで、リードもライトもその構造体ベースでやれれば変更は1箇所で済む、
ということを考えているのだが、これはSQLの構造上厳しそうだ。
今sqlx読んでいるが多分無理だね。
0980デフォルトの名無しさん垢版2017/11/11(土) 14:14:23.09ID:proXGFSN
>>979
だよね。静的言語を使う限りどうしようもない。
スキーマ設定をどこに置くかという問題だと思うが。
goの構造体からsqlのスキーマを作る
or
sqlのスキーマからgoの構造体を作る

の二択しかない。リフレクションを駆使して動的にスキーマ解決したいって
結局実行時エラーの可能性が出るだけだし。
0981デフォルトの名無しさん垢版2017/11/11(土) 14:27:57.90ID:LLMRc4SD
>>979
今回は味見なんだよ。
だから糞でもとりあえずコードを書いてどれくらい速いか試すよ。
とはいえ、RawBytesとか用意して最下層のコピーもケチるくらいだから、完全にノリがCだね。
これで遅いわけがないが、結局は管理コストとの兼ね合いだろうね。
俺はC出身だから付いていけるけど、今時ではないよなこれは。

俺はPHPでも十分速いと思っている。
というか、SQLiteのラッパとしてしか使う気がないから、せいぜい100行程度しか実行しないし、
言語間の差異はほぼ無く、DBの性能が見えるだけだと思っている。
でもまあ、さんざん「PHPは糞だ」という奴が居るから味見中な訳だ。
選択肢が増えること自体は悪いことではないし。

Node.jsは既に味見終了して、データセットが小さい時はPHPよりは速い結果が出た。
しかし大きい時はPHPよりも遅くなった。これはclusterしてないのでシングルスレッドの限界かと思っている。
ただ、Nodeの場合は単一プロセスだからメモリ側にキャッシュ出来、これだと当然ぶっちぎりで速いので、
現実的にはこれかな、といった感じ。

で、Goはどうなの?ってのが今。興味あるのなら以下にどうぞ。
https://meguca.org/g/2724701
Haskellerが現れたので引っ張り込む方向で考えてる。
君らがGoのを書いてくれるのならこちらも助かるし歓迎する。
0982垢版2017/11/11(土) 14:53:58.14ID:X8lWnCzG
Cでこれ書いたら絶望的にめんどくさくない?
そもそもSQLサーバができることはSQLサーバに任せてストアドにするか、
データベース自体Goで書くか、なんかそうしないと、
インピーダンス差がでかすぎるのに2重管理しない、は無理じゃない?
2重管理が絶対的な悪ではないと思うけど。
0983デフォルトの名無しさん垢版2017/11/11(土) 15:20:24.76ID:LLMRc4SD
>>982
誰もCで書くとは言ってないが、仮にCで書くとして、
ライブラリが揃っていれば、大して苦労しないと思うよ。
Goとは大差ないだろう。

ほぼローカルで動作してしまうのでGCがないと苦労するってこともないし、
型システムも100行程度のプログラムならウザイくらいで大してメリットないし。

動的言語の場合は既に言われているようにスキーマ管理が一元化出来る
(正確にはやらなくてもそのまま動くだけだが)
分だけ書く量は少なくて済む。
プロトタイピングには動的言語の方が向いてる。

なお今回の場合はGoがCに劣ることもないので、わざわざCで書き直すメリットはない。
(GCをほぼ使わないから速度低下もないし)
0984デフォルトの名無しさん垢版2017/11/11(土) 15:36:08.28ID:proXGFSN
>>983
>動的言語の場合は既に言われているようにスキーマ管理が一元化出来る
>(正確にはやらなくてもそのまま動くだけだが)
> 分だけ書く量は少なくて済む。
> プロトタイピングには動的言語の方が向いてる。

同意する。Goでデータベース操作の決定版がでないのが物語ってる。

逆にGAE/goのdatastoreを使うときはGoとの相性の良さを感じる。
スキーマがGo側に設定することが決まっているから。
0985垢版2017/11/11(土) 15:56:16.25ID:X8lWnCzG
>>983
まー、確かに。
正直すぐ死ぬプログラムならメモリ管理もしない()という選択肢もあるわけだしな。
外の世界と相性の悪い言語だと言うことは確か。
形が適当なjsonとかとも同様にいちいちキャストがしちめんどくさいし。
c#で言うdynamicみたいな型がありゃ良いなとは思うが、コンパイル時に解決してる事を善とするので無いのは仕方ない。向いてないわ。
0986デフォルトの名無しさん垢版2017/11/11(土) 16:18:54.52ID:LLMRc4SD
というか、これはAPIが足りてないんだね。
(以下コードは文法があやふやなので参考程度で)

database/sqlはScanを使うのが定番のようだが、Scanではargsの可変長指定しかないのがいけない。
だから構造体の中身を確認するのにリフレクションが必要になってしまう。

type Thread struct {
no int
time int
body string
}
th := Thread{}
rows, err := db.Query("SELECT * from threads;")
err = rows.Scan(&th.no, &th.time, &th.body) // ここでばらすから中身を知らないといけない

とりあえずScanが構造体を受け、その構造体にScannerインタフェースを実装する方式なら、
リフレクションは回避出来るし、おそらく最高速度で動く。
ただ、このためのAPIがない。

err = rows.Scan(&th) // ばらさずに構造体を与える
func (th Thread) Scan(src interface{}) err // 各構造体でばらす。手間は増えるが最速のはず

DBを生で叩いたことがないから知らないが、DBからの出力が既に配列なのか?
或いは同様のことはポインタ配列で受ければいいので割り切ったか。(972参照)

>>984
GAE/Goはググってみたがよく分からん。
ただ今回はCREATE TABLE部分も自前で持つ為、スキーマ管理はGo側でも「本来は」出来る。
SQLの構造上、CREATE TABLE と INSERT はほぼ同じなのでPHP等ではSQL文字列を共有出来る。
だから1箇所にしか書かずに済んでた。ところがGoはリード側も必要だからぐぬぬ、ってなってる。
0987デフォルトの名無しさん垢版2017/11/11(土) 16:29:51.83ID:LLMRc4SD
>>985
お前他スレも荒らしてた荒らしだろ。

この程度のプログラムで「メモリ管理(キリッ」とか言っちゃう時点でお前はCを知らないし、
お前みたいな馬鹿にはCは無理だ。
それで何故Cに話を振る?だれもCで実装しようともしてないのに。

普通にCが出来る奴なら鯖でDB読んでJSON返すだけのプログラムでリークはしないし、
リークしないように管理する(程のこともないが)に苦労することもない。
そもそもそれはGoで書いた時にGCがどこで動くか見えていれば分かるはず。
君はそこにも達していない。
0988デフォルトの名無しさん垢版2017/11/11(土) 17:10:37.92ID:ZUnF3Lay
うめようず
0989デフォルトの名無しさん垢版2017/11/11(土) 17:56:09.07ID:LLMRc4SD
というか void* がないのね。
これではどうやっても fetch_all で隠蔽出来そうにない。
まあ void* なんて認めたら型システムは崩壊するから致し方無しか。

そしていきなりunsafeに手を出そうかと考えているわけだが、
これって Offsetofがあるって事は基本的にはマーシャル用なのかな?
0990垢版2017/11/11(土) 18:53:30.76ID:X8lWnCzG
>>987
荒らしじゃないよ。
真面目に話してるが、仮定に対して仮定したら切れるって意味わからん。
0991垢版2017/11/11(土) 18:58:21.35ID:X8lWnCzG
>>987
まさか、
>>981の、ノリがC、C出身だからついてける、に対して
「ならCで書けば?でもめんどくさいと思うけど。」って嫌味だって気づいてないんだろうか?
可哀想な人ってどこにでも居るんだな。

Gcが動くタイミングに関しては、多分もう少しマシなレベルで知ってると思うけど。

そもそも、CでDBから取得してどうの、と言う話で、何を使うかどう取得するかすら決まってないのに、リークしないようにメモリ管理するなんて絵空事は言えんだろ。
全部インハウスライブラリならわかるけどさ。
メモリ管理しない、は思いつきでも言えるわ(笑)
0992垢版2017/11/11(土) 18:59:31.42ID:X8lWnCzG
嫌味が荒らしになるとは、ネットは京都より平和な場所になったんだなぁ。
0993垢版2017/11/11(土) 19:03:39.05ID:X8lWnCzG
よく読んだら>>979で同じ事言われてるのにドヤ顔で返事してるし、本気でそうなんだろうな。

void* をどう使いたいかによるだろうが、それこそ*interface{}じゃねえの?と思ってしまう。
0994デフォルトの名無しさん垢版2017/11/11(土) 19:16:58.98ID:TpLoCFAx
次スレよろ
0995垢版2017/11/11(土) 19:23:54.10ID:X8lWnCzG
まあ、要らないカラムが多すぎるだけなら、
row,err:=sql.Queryで、
column,err:=row.Columns()
vals:=Make([]sql.RawBytes,len(column))
args:=Make([]interface,len(column))
for i:= range values {
 args[i]=&vals[i]
}

でvalsとargsつくって、
Scanに(args...)で渡せば、
使うときにvals[i]をstring(vals[i])とかよしなにしちゃえるんじゃないの?
0996デフォルトの名無しさん垢版2017/11/11(土) 19:26:08.40ID:LLMRc4SD
>>991
日本語でおk

君と話が噛み合わないのは、君が勝手に読み違えているから。
それは君の日本語能力が不十分だから。
だから君は荒らしなんだよ。
俺は他スレで君が同様に空回りしてるのを見たことがある、というだけ。

君には荒らすつもりはないのだろう、それは事実としても、
日本語能力が足りない奴がレスすること自体が荒らし行為なんだよ。
馬鹿なら馬鹿なりに何度でも読み返せばいいだけなんだがな。

韓国人ならマジで死んでくれ。


>>994
おk。>>46見る限り次スレはpart6(このスレがpart5相当)でいいか?
8時まで待って異議なしなら俺が建ててみる。
異議ありならその人が建てて。
0998垢版2017/11/11(土) 19:26:34.95ID:X8lWnCzG
>>996
ごめん、勢いで建てた。
0999垢版2017/11/11(土) 19:27:10.90ID:X8lWnCzG
>>996
バカはバカなりに何度も読み返してくれれば、嫌味にも気がついだだろうに。悲しいなぁ。
1000垢版2017/11/11(土) 19:34:53.44ID:X8lWnCzG
まあ、可変長受ける関数に実体を指すinterfaceの参照のスライスを...で渡せるのはと割と便利。
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1493日 7時間 30分 2秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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