Go programlamada fonksiyonlara seçenekler (options) geçirme mekanizmalarının tasarımı, geliştiriciler için sıkça karşılaşılan bir zorluktur. Makale, bu konuda yaygın olarak kullanılan seçenek yapıları (option structs), çok sayıda metot veya varyant kurucular gibi yaklaşımların yetersiz kaldığını belirterek, öz-referanslı fonksiyonlara dayalı yenilikçi bir çözüm sunuyor. Bu yaklaşım, bir option tipinin func(*Foo) şeklinde tanımlanmasıyla başlar; yani her seçenek, üzerinde işlem yapılan Foo nesnesini argüman olarak alan bir fonksiyondur. Foo nesnesi üzerinde tanımlanan Option metodu ise kendisine geçirilen tüm seçenek fonksiyonlarını çağırarak nesnenin durumunu günceller. Bu sayede, tek bir çağrıda birden fazla seçeneğin uygulanması mümkün hale gelir.
Seçenekleri sağlamak için, ilgili pakette Verbosity gibi isimlerle fonksiyonlar tanımlanır. Bu fonksiyonlar doğrudan nesnenin alanını ayarlamak yerine, bir closure (kapanım) döndürür. Döndürülen bu closure, asıl option fonksiyonunu oluşturur ve Foo nesnesinin belirli bir alanını ayarlar. Örneğin, Verbosity(3) çağrısı, Foo nesnesinin verbosity alanını 3 olarak ayarlayacak bir option fonksiyonu döndürür. Bu tasarım, istemcinin seçenekleri foo.Option(pkg.Verbosity(3)) gibi temiz ve okunabilir bir şekilde kullanmasını sağlar ve closure'ları doğrudan yazma yükünü ortadan kaldırır.
Makale, bu temel yapıyı daha da geliştirerek, Option metodunun önceki durumu döndürebilme yeteneğini ekler. Bu, geçici değerlerin ayarlanıp daha sonra orijinal durumuna geri dönülmesi gereken senaryolar için kullanışlıdır. option tipi func(*Foo) interface{} olarak değiştirilir ve her seçenek fonksiyonu, ilgili alanın önceki değerini bir interface{} olarak döndürür. Option metodu da son uygulanan seçeneğin önceki değerini döndürecek şekilde güncellenir. Bu sayede, istemciler foo.Option(pkg.Verbosity(3)) çağrısının sonucunu kaydederek, daha sonra foo.Option(previousVerbosity) gibi bir çağrı ile eski duruma dönebilirler. Bu esneklik, Go'da daha güçlü ve geri alınabilir seçenek mekanizmaları tasarlamanın kapılarını açar.
Go'da esnek ve güçlü seçenek mekanizmaları tasarlamak için öz-referanslı fonksiyonların ve closure'ların nasıl kullanılabileceğini gösteren zarif bir tasarım deseni sunuyor.