Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

Go Programlama Dili (Golang) ile Ayar Dosyası Kullanımı

1 min read

Golang Configuration File

Her projenin olmazsa olmazıdır ayar (konfigürasyon) dosyaları. Son zamanlarda bu maksatla .env (dotenv) kullanımı yaygınlaşmış olsa da, ben özellikle Go Programlama Dili ile oluşturduğum projelerde JSON kullanmayı tercih ediyorum. Bu yazıya temel olması için hazırladığım goconf mini projesinde de go ile json kullanımını göstermeye çalıştım.

Go ile Dosya Okuma

Ayar dosyası adı üstünde bir dosyadır (file). Demek ki buradaki mesele JSON formatındaki bir dosyadan verileri go projesine çekmek. Aslında go ile dosya işlemlerini zaten anlatmıştım. İlgili yazıda belirtilen konuları burada pratiğe döktüğümüzü görebilirsiniz.

JSON Ayar Dosyası

Ayar dosyamızın (conf.json) içeriği şu şekilde:

{
    "Animal"    : "Elephant",
    "Fruits"    : ["Apple", "Banana"],
    "Quantity"  : 100
}

Bilerek 3 farklı değişken tipi kullandım. Görebileceğiniz gibi Animal string, Fruits string’lerden oluşan bir dizi ve Quantity integer tipinde değişkenlerdir.

Go ile JSON Dosya İçeriğini Çekme

Go ile json dosyasını okuduğumuz ve buradaki verileri projede kullanılabilir hale getirdiğimiz kodlarımız şu şekildedir:

package main

import (
	"encoding/json"
	"fmt"
	"os"
)

// Conf struct to handle variables
type Conf struct {
	Animal   string
	Fruits   []string
	Quantity int
}

func main() {

	file, _ := os.Open("conf.json")
	defer file.Close()
	decoder := json.NewDecoder(file)
	conf := Conf{}
	err := decoder.Decode(&conf)
	if err != nil {
		panic(err)
	}

	fmt.Println("Animal   :", conf.Animal)
	fmt.Println("Fruits   :", conf.Fruits)
	fmt.Println("Quantity :", conf.Quantity)

	/* Output

	Animal          : Elephant
	Fruits          : [Apple Banana]
	Quantity        : 100

	*/

}

Özetlemek gerekirse burada şunları yapıyoruz:

  • Ayar dosyamızdaki değişkenlere uygun bir struct (Conf) oluşturuyoruz.
  • Open ve json methodları yardımıyla json dosyamızdaki verileri Conf struct’ına atıyoruz. Hepsi bu kadar.

Github Sayfası ve Son Sözler

Yine bir Go Programlama Dili yazısının sonuna geldik. Özetleyecek olursak bu yazıda go projelerinizde kullanabileceğiniz json formatındaki bir ayar dosyasının nasıl kullanılabileceğimizi görmüş olduk.

goconf ismini verdiğim mini projenin kodlarında github sayfasından ulaşabilrsiniz.

Burada anlatmış olduğum konu konfigürasyon dosyaları için başlangıç düzeyinde olup, hazır paket olarak gelişmiş bir çözüm arıyorsanız viper, nispeten daha sade ve basit bir çözüm arıyorsanız joshbetz/config paketini tavsiye edebilirim.

Sevgiler, saygılar…

Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer