Go言語には、C言語やJavaにおける「enum(列挙型)」のような機能がありません。 Go言語をやり始めて最初にこれを知った時、 え嘘でしょ? と言いたくなりました。 が、実際には 定数定義とiotaを利用することでC言語における列挙型に近い振る舞いを実現することが可能です。 例えば、Red, Blue, Yellowを持つColorというenumを作る場合は以下のように定義します。 type Color int const ( Red Color = iota Blue Yellow ) で、iotaって何ですかって話なんですが。 識別子iotaは、定数宣言文(const)内で使用される、型なしの連続する整数定数を表します。 本定数は予約語constが現れた時に0に初期化されて、各定数定義の後に1ずつインクリメントされます。 ちなみに読み方は「イオタ」。 例えば、iotaを使って定数(
ハロー、 ワールド! Refactoring.Guru を使えば、 リファクタリング、 デザインパターン、 SOLID 原則、 その他の賢明なプログラミング技法について、 知っておくべきことを簡単に見つけ出せます。 このサイトでは、 大局的観点、 お互いの関連、 なぜ重要かなどを説明します。 筆者は勿論これらの概念を発明したわけではありません。 ほとんどは、 今や過去となってしまった 20 世紀に発明されています。 しかし、 多くのプログラマーにとって、 リファクタリングとパターンと一般的プログラミング原則のつながりは、 謎の部分が多いと思います。 私はこの問題を解決したいと思います。 追伸 リファクタリングとデザインパターンに関する大量の情報を、 このサイトで見つけることができます。 当プロジェクトは常時改善していますが、 進捗状況を知るには、 メーリングリストに登録するか、 Faceb
C言語で引数なしの関数を書くときに void を書かないのと書くのとで挙動が違うなんて話を聞いたことはないでしょうか? つまり void func() {} と void func(void) {} で挙動が違うという話ですね。 自分も話だけ聞いたことがあったものの2つがどう違うのかはわかっていなかったため、C言語の規格を読みながら何が違うのかを調べてみました。 結果だけ述べると、この2つの書き方は同じように見えて実は明確な違いがあり、引数がない関数を定義/宣言する場合には後者を使うのが適切です。 とは言え、2つの書き方で違いがあるとかほんとかよ?と思う方もいると思うので、まずはこの二つがどう違うのか見ていきましょう。 2つの関数の書き方の違い 早速ですが、以下のプログラムを見てみましょう。 // func_empty.c void func() {} int main(void) { f
以下のツイートにもある通り、一見 golang は struct を定義しないと JSON を扱えないように見えます。他にも似たようなツイートをチラホラと見かけましたが、それらは全部誤解です。そこでこの記事では、golang でゆるふわ (structを定義せず) に JSON を扱う方法を紹介します。 golang。rubyのようにゆるふわにJSONは扱えない? https://t.co/olsryDHc5G — bamchoh (@bamchoh) 2016年6月24日 この記事では入力の json.Unmarshal() を取り扱いますが、出力の json.Marshal() にも応用できます。 TL;DR json.Unmarshal() には *interface{} を渡せます interface{} は dproxy を使うと、値のアクセスで楽ができます json.Unmar
プログラミングのなんとか安全まとめ 安全とは 安全の正確な定義は難しいですが、ここでは「特定のリスクが十分に低減されている状態」について考えたいと思います。 人間社会を例に考えてみると、我々の生活は常に犯罪や災害、疫病などの危険にさらされています。しかし通常の生活において、これらのリスクを強く意識することはありません。それは行政(警察や消防や法制度など)の社会システムが、リスクを十分に低減する処置をとっているからです。 ソフトウエアにおける安全も基本的に同質であり、言語やフレームワーク、開発プロセスによって、リスクを管理することで安全の実現を目指します。 リスク管理は何らかの制限を伴いますので、何を自由とし、リスクとするかは、エコシステム毎に異なります。例えば銃器は、国によって所有に対する規制の強弱が分かれています。しかし認可されている国の治安が、必ずしも悪いわけではありません。社会がその
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く