Go言語での構造体実装は、埋込や独自コンセプトのインターフェースといったGo言語独自の機能を理解して行う必要があります。 今年からGo言語を始めましたが理解が曖昧なままだと実装に迷うことが何度かありました。今回よい機会なので、Go言語での構造体実装パターンとしてまとめてみることにしました。 構造体実装パターン 実装パターンの洗い出しとして、GoFデザインパターンをGo言語で実装する手法をとりました。 その中で繰り返し現れる実装をGo言語での構造体実装パターンとしてまとめてみました。 コンストラクタ関数 エクスポートによるアクセス許可 インターフェースによるポリモフィズム 構造体によるポリモフィズム 構造体によるサブクラス・レスポンシビリティ 構造体による移譲 関数による移譲 以下、それぞれのパターンを解説していきます。 コンストラクタ関数 Go言語には構造体のコンストラクタがないため、構造
http://www.youtube.com/watch?v=qATTTSg6zXk 1 comment | 1 point | by WazanovaNews ■ comment by Jshiike | 約3時間前 YouTubeのシステムアーキテクトであるSugu SououmaraneのFOSDEM 2014での講演です。スライドはこちらからダウンロードできます。 1) Vitessとは Vitessは大規模な本番環境でMySQL DBを効率的に利用するためのオープンソースプロジェクトです。概要はプロジェクトゴールのページ にまとまってます。 MySQLは機能が豊富だがスケールさせるときは苦労する。一方、NoSQLはスケーラビリティには問題がないが、アプリケーションが複雑になるとできることに限界があるのがネックになる。セカンダリインデックス、joinsなどがサポートされていない。
BabelとWebPackを使ってES6からブラウザで動く環境を作るための登壇資料。半分ライブコーディング的に動かしているので、スライドだけだと少々わかりにくいかもしれません。 ※ 後日LIGブログで記事にするかもです
Ask questions and post articles about the Go programming language and related tools, events etc. I've been advocating Go to a friend who's in a position to make this choice. I googled for "Go vs Node.js" articles, but there's surprisingly little on the web comparing the two (and what's there is pretty bad and uses bubble sort as a basis for comparison). Basically, unless you're going to get a lot
Go言語の名前の由来について、デマを思いついたGo言語の名前の由来について、デマを思いついたので、ちょっと面白いと思った人は広めてほしい。 Go言語の名前の由来って知ってる? あれは日本語の数字の5(ゴー)から来てるんだよ。 5は4(シー)、つまりC言語の次だから。 つまりC++やC#と同じ由来なのね。 あ、C#はC++++なんだよ。知ってた?(注:これは本当) こんな感じで。 Go言語はブレイク寸前であり、かなりの関心を集めているが、まだ詳しく知られてはいないので、デマを広めるには今が絶好と思う。 なんでロブ・パイクやケン・トンプソンが日本語を知ってるんだ、ともっともな指摘を受けた場合こんな感じで返していただきたい。 ロブ・パイクやケン・トンプソンがUTF-8の考案者だということは知ってる?(注:これは本当) で、彼らがそれを考案するきっかけは、慶應の村井純先生が、ベル研で「日本語」につ
http://www.sitepoint.com/go-rubyists-ii/1 comment | 0 pointsGlenn Goodrichが、Rubyプログラマー向けにGo言語のinterfaceとWeb.goを紹介しています。1回目はまずは、interfaceから。 The Fallacy of Inheritance 継承は些細な修正も実装が面倒になり、コードが複雑になる可能性があります。例えば、Horseクラスと二つのサブクラス、GallopingHorseとSadHorseがあったとします。(その二つはステートの違いだけでなく、まったく性格の違うサブクラスかもしれません。)sadな雰囲気で、gallopをしているhorseがいる場合はどうするか?それぞれのクラスである振る舞いがロックアップされることになるかもしれません。また、type間の関係を考慮しなくてはいけなくなるの
Go 1.2が12月1日にリリースされました。 そして、同時くらいに社内のGo readability approverの一員になったので、ちょっとCode Readabilityについて書いてみようと思います。 Google社内では、主要なプログラミング言語について Readability というのが存在します。 「C++のReadabilityを持っている」とは、C++のコードをスタイルガイドに従ったコードを読み書きできる能力があることを意味しています。社内のコードベースと一貫したコードで開発できるということです。Readabilityをもっていない人は、Readabilityを持っている人にcode reviewしてLGTM/Approvalを貰わないとコードをrepositoryにcommit/submitすることができません。 readability approverは、ある開発
この記事は Go Advent Calendar 2013 の 9 日目の投稿です。 今回は、 Go の testing というパッケージの使い方を解説しようと思ったのですが、 それだとつまらなすぎるので、合わせて Go が test というか assert についてどういうスタンスをとっているかを書いてみます。 Go でテスト さて、「テストのないコードはレガシーコード」などと言われて久しく、様々な言語が test (主に Unittest) について言語レベルでサポートしたり、デファクトなライブラリが確立したりといった状況が、今日では至って普通のこととなっています。 そんな言語や環境で、息をするようにテストを書いてきたみなさんが、はじめて Go でコードを書く時に見るべきは testing パッケージです。 http://golang.org/pkg/testing/ 命名規則 では、
package 宣言における名前付けのアプローチが、go と Java では考え方が随分違っていて面食らったので忘れないうちに書いておきます。 go 言語のテンプレート API#go 言語にはテンプレーティングする API が標準で二種類あります。 text/templatehtml/templateTemplate という struct がそこらじゅうで出てくるのですけども、何か混ざったような印象を受けるのです。 html/templateの API はtext/templateを利用して実装しているので、ある種の重複は当然あってしかるべきなのですけども、何か違和感がありました。 コードを引っ張りだしてみます。 text/template/template.go package template import ( "fmt" "reflect" "text/template/parse"
http://matt-welsh.blogspot.com.au/2013/08/rewriting-large-production-system-in-go.html Go言語の4周年をテーマにしたgolang.orgのブログで紹介されていた、GoogleのMobile Web Performanceチームに所属するMatt Welshのブログです。大規模な本番システムの作り直しにGo言語を採用した経験を語っています。 1) 背景 C++のオリジナルのコードベースは問題なく作動していたが、何年も複数の目的の違うプロジェクトで共有されていたため、スピーディーに改修するのが難しくなっていた。(何のシステムなのか具体的に書いてないのは残念。。) イメージフォーマットをトランスコードするライブラリはC++で完璧に動作していたので、そのまま残し、それ以外を全てGo言語で書き直した。 元のコード
http://da-data.blogspot.jp/2013/10/experience-with-epaxos-systems-research.html Go言語についての記事をまとめていて困るのが、特にHacker Newsでは熱狂的な賛成派と執拗な反対派が感情的に戦っていて、Go言語の何がいいのかはわかるが、まだ改善すべき余地のあることが実際どれほどの支障になるのかについては、議論からは判別しづらいことです。 カーネギーメロン大のDavid Andersonが、分散アルゴリズムEPaxosをGo言語でインプリしたときの経験について”Huge Positive” “It proved a huge win” としていながら、苦労したポイントを挙げています。このような具体的な事例がもった蓄積していくと参考になるのではないかと思います。 Go言語による開発で苦労したのは、Zookeep
http://commandcenter.blogspot.se/2012/06/less-is-exponentially-more.html Goの開発メンバであるRob Pikeが、なぜRuby / Python経験者がGoに移ってくるのに、C++の開発者はあまり飛びついてこないのかについて昨年のブログで語ってます。 Goの開発のきっかけは、C++11の新機能の説明会に参加して、本質的でないと思う機能がどんどん追加されることに失望したから。 Cを元に開発しようという話しはでたが、実際のGoの開発過程では様々な言語のベストプラクティスを考慮してつくったので、Cがベースになったわけではない。 ただし、結果的には、 C / C++ と比較して相当シンプルになった。我々は、”Less is more” で、余計なものを入れずに本当に必要なものを揃えた方が問題を解決しやすい開発言語になると考え
http://forum.dlang.org/thread/l37h5s$2gd8$1@digitalmars.com FacebookでD言語が採用されたというニュースですが、この内容では本番サービスに投入されたのか、社内ツールで採用されたのかよくわかりません。「AppleがObjective C、GoogleがGo、MozillaがRustを担いでいるのに対抗して、FacebookもDを採用することで、C/C++後継争いに参戦。」というコメントもありましたが、単に元のC++のコードがヒドすぎたから替えただけという可能性もあります。Facebookのエンジニアブログで正式に発表されるのを待ちたいと思います。 D言語 [参考: D言語基礎文法最速マスター] のクリエーターのWalter Brightは、5月のdconfで方針を語ってます。 1) 簡単に読み理解できるコード 正しいコードが正
[Video] http://www.youtube.com/watch?v=fc25ihfXhbg [Slide] http://talks.golang.org/2013/highperf.slide#1 5月のGoogle I/OでDavid SymondsがApp Engineのアプリのパフォーマンスを向上させるポイントを紹介してます。 [Goを採用した理由] ネイティブコードにコンパイルするGoは、スピードの速いランタイムが実現できるのでApp Engineに最適。 [事例] Thanksgiving 2011 Google Doodle: Goの経験のなかったGoogleエンジニアが24時間でつくった。Python 2.7ランタイムと比較して遅延が半減。 Santa Tracker 2012: 5,000クエリ/秒をさばいた。 [パフォーマンス改善のポイント] 1) パフォーマ
先日、Go言語開発チームはリポジトリ内にあった殆どのMakefileを削除した。私(訳者)は混乱したし不安にもなった。しかしそれは私がこれまでの習慣と異なる場面に遭遇した事による物だと気付いた。その事を色濃く書かれたいる記事があったので紹介したい。Go言語を知らない人でも面白く読めると思います。 Are You Fuckign Coding Me!? - The go tool http://areyoufuckingcoding.me/2012/02/14/the-go-tool/ 本訳を許諾してくれたnu7hatchに感謝したい。(Thanks to nu7hatch) THE GO TOOL 毎週リリースされる最新版に新しいgoコマンドが導入され話題になっていたので、ちょっとこれについて書くことにした。 私は初め、このgo toolを統一しようというアイデアを聞いた時、少し懐疑的にな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く