https://github.com/naoina/gocchan

FeatureToggle とはなんぞや?という方は http://martinfowler.com/bliki/FeatureToggle.html とか見てください。日本語の情報はかなり少ないようです。

今回作ったのは Gocchan という golang 用 FeatureToggle ライブラリです。読みは「ごっちゃん」です。Go の channel とは一切関係ないです。
Ruby on Rails 用のそういったライブラリとして Chanko というのがあるのですが、まぁ名前や機能はそこから来てます。

使い方は以下のような感じです。

package main

import "github.com/naoina/gocchan"

type MyFeature struct {}

func (f *MyFeature) ActiveIf(context interface{}, options ...interface{}) bool {
    return true
}

func (f *MyFeature) ExecMyFeature(context interface{}) {
    // do something.
}

func init() {
    gocchan.AddFeature("name of feature", &MyFeature{})
}

func main() {
    gocchan.Invoke("context", "name of feature", "ExecMyFeature", func() {
        // default processes.
    })
}

この例でいうと、ActiveIftrue を返した場合に ExecMyFeature が実行され、false を返した場合は Invoke に渡した関数(デフォルト関数)が実行されます。
例えば ActiveIf の返す値を設定ファイルや DB から持ってくるようにしていれば、まさに FeatureToggle として機能します。
また、Chanko と同様に、Invoke の中(ExecMyFeature メソッドの中など) でエラーが発生した場合もデフォルト関数が呼ばれます。ですので、単なるフラグを使って if-else で分岐するよりも安全です。
Invoke の第 1 引数には任意のオブジェクトが渡せ、それが ActiveIf や Feature function (この例でいうと ExecMyFeature) に渡されますので、これを使って自由に機能を追加できます。

まぁこれだけのライブラリですが、FeatureToggle 用途として普通に使えるんじゃないかと思います。