Go language part 1

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2013/10/10(木) 12:04:51.78
Goについて扱うスレッドです。
GoはGoogleによって開発された言語です。
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まで巻き込んでいく可能性もあるのか
0358デフォルトの名無しさん
垢版 |
2014/11/11(火) 12:41:50.08ID:wdqJ9aU+
Happy birthday to you,
Happy birthday to you,
Happy birthday, dear golang〜♪
Happy birthday to you〜♪
0359デフォルトの名無しさん
垢版 |
2014/11/11(火) 13:33:55.75ID:7vWNWhS8
見上げて golang 夜の星を
小さな星の 小さな光が
ささやかな幸せを うたってる
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
本は俺もほしいなぁ
ってか、本とかまともにないと絶対普及しないと思うし。
誰か本書いてくれないかなぁ(チラチラ
0372デフォルトの名無しさん
垢版 |
2014/11/17(月) 23:10:56.23ID:ppTtjJs6
うるせー社員
Googleマップで見つけたチンパンジーとGo言語しゃべっとけよ、アホ
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は参照型だからね
それ自体でポインタみたいなもんだから直でいける
■ このスレッドは過去ログ倉庫に格納されています

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