goで継承は出来ない…けど
んー、確かに「継承」はできないんだけど。似たような別の方法はあるってことで。
golangのLanguage Design FAQ::「Why is there no type inheritance?」辺りを読むといいかも。
method setを無名で内包する形で定義すると継承したみたいな感じになるっていうのと、interfaceは使いたい放題っていう当たりがキモかなぁ。
継承というよりは拡張という感じだけど感じ方はひとそれぞれ。
以下、サンプル。
goで関数内に複数のreturnを書くことができないなんて嘘
@itのGolangの記事の誤解
を見て知ったんだけど、全く同意。
記事を@ITに書くというのは非常に有意義で、是非これからも末永く続けて欲しいと思う。だけどミスリーディングはヤメテ欲しい。
package main func Fx(i int) (ret int) { if i > 0 { ret = i*i; return; } else { ret = 0; return; } return; } func Fx2(i int)(int) { if i > 0 { return i*i } else { return 0; } return 0; }
単純にコントロールパスの問題。最後のreturnには絶対に入らないからそれぐらい察しろよgoコンパイラって事かもしれないけど、だからといって関数内に複数のreturnを書くことができないというのは無茶。
その他、記事全体的に微妙な感じがする。
「Google Go登場の背景」はもう少し別のところにあるとおもう今日この頃。
goの名前解決(Linux)
なんやかんややりつつOAuthの実験にサーバにgoの吐いたオブジェクトを持っていった時の話。
どうしてもnet.dialで名前解決に失敗する。あれ?と思ってping打ってみたりnslookupしてみたりすると普通に名前解決できる。し、サーバじゃなければOSXでもLinuxでも普通に動くのだ・・・。
この辺、Issue 345: DNS being very flaky.見て、resolv.confにoptions?って思ったけどちょっと現象が違う。
んむむ、って思って go/src/pkg/net/dnsclient.goをじっと眺めると…解ったorz
普通、resolv.confのnameserver行にはプロバイダに割り当てられたDNSサーバのIPアドレス書くなり、dhclientが勝手に追記してくれるんだけど、このサーバ web兼、dns兼、mailというサーバで、ローカルでbind9が動いてるので、
nameserver localhost
って設定が。
goのdnsclient.goは御丁寧にnameserverでの指定がIPアドレスかどうか見てくれてる。libresolvだと、/etc/host.conf見て/etc/hostsも見に行ってくれるんだけど。
って、事でnameserver 127.0.0.1
に修正。あっさり動いた。
んー…、色々思うことも有るものの後術w
Link:: Go の X11 ライブラリを試してみる
releaseブランチしか見てなかったというか更新追いかけてなかったというか。
こういうのも有るのね。
Skypeのブリッジも結構簡単に書ける・・・かも。
ということでdefaultブランチをごにょごにょ中w