Teknik Detaylar

Go ve Değişkenler

← Teknik Detaylar
2021-10-04 ~ 2022-05-11 · 4 dk okuma
Go ve Değişkenler
Bu yazıyı yapay zekâ ile tartış
Sayfayı kopyala

💡 Özet (TL;DR):

  • Değişken Tanımlama: Go'da değişkenler var anahtar kelimesiyle veya fonksiyon içinde := (kısa atama) operatörüyle tanımlanır.
  • Katı Kurallar: Go'da tanımlanan her değişkenin mutlaka kullanılması gerekir (Kullanılmayan değişkenler derleme hatasına yol açar).
  • Sabitler: Değiştirilemeyen değerler için const anahtar kelimesi kullanılır. Ardışık sabit değerleri otomatik artırmak için iota tercih edilir.

Daha önce Go'dan kısaca bahsetmiş, Windows ve Linux'ta kurulumlarının nasıl yapılacağını anlatmıştım. İlgili yazıların bağlantıları için bkz. Go Programlama Dilinin Özellikleri, Windows 10'da Go Kurulumu, Linux'ta Go Kurulumu.

Go'ya giriş yaptığım bu ilk yazıda değişkenleri inceleyeceğim. Yazıda belirli seviyede bir programlama altyapınız olduğunu ve sadece Go'da yeni olduğunuzu varsayarak çok temel konulara değinmeyeceğim.

Go'da birçok veri tipi bulunsa da bu veri tiplerinde değişken tanımlamak için aynı yöntemi izliyoruz. Go'da değişkenlerle ilgili bilmeniz gereken bir numaralı kural: Bir değişkeni tanımladıysanız kullanın, kullanmayacaksanız tanımlamayın. Bilmeniz gereken ikinci kural ise Go'da Garbage Collection (Çöp Toplayıcı) başlıklı yazının bir bölümünde değindiğim gibi değişkenleri tanımladığınız kapsamları (scope) doğru seçmenizdir. Değişken size nerede lazımsa orada tanımlayın; değişken tanımını gereksiz yere globalde veya daha üst kapsamlarda yapmayın.

Şimdi gelelim Go'da nasıl değişken ve sabit tanımladığımıza.


Go'da Değişken Tanımlama Yöntemleri

Go'da değişken tanımlamak için birden fazla yöntem vardır. İlk ve en açık yöntem, başka dillerde de kullanılan var anahtar kelimesini tercih etmektir.

Aşağıdaki satırda username adında ve string tipinde bir değişken tanımlıyoruz:

var username string

Aynı veri tipinde birden fazla değişkeni tek satırda tanımlayabiliriz. Örneğin aşağıda username ve password adında ve string tipinde iki değişken tanımlıyoruz. Değişken adları arasında virgül kullanmamız gerekir:

var username, password string

Değişken tanımlarını parantez içerisine alarak, tek bir var anahtar kelimesi ile birden fazla değişken tanımlayabiliriz:

var (
    username, password string
    loginCount int
)

Go'da Değişkenlere Başlangıç Değeri Atama

Go bu konuda oldukça esnek bir yapı sunar ve değer atamak için birden fazla seçeneğiniz bulunur.

Değişken tanımını aşağıdaki şekilde yaparsanız Go hem bu değerleri başlangıç değeri olarak atayacak hem de bu değerlerin tipini otomatik olarak (type inference) tespit edecektir:

var (
    username = "evrenbal"
    password = "şifre"
    loginCount = 0
)

İsterseniz bu işlemi tek satırda da gerçekleştirebilirsiniz:

var username, password, loginCount = "evrenbal", "şifre", 0

Ancak Go'da değişken tanımlama ve ilk değerini atama için çoğu zaman yukarıdaki yöntemler yerine kısa yol kullanılır. Normal şartlarda = ile bir değer atamak isterseniz bu değişkenin önceden tanımlanmış olması gerekir. Fakat değer atamayı := ile yaparsanız Go değişkeni oluşturur, veri tipini verdiğiniz değere göre otomatik belirler ve bu değeri değişkene atar:

func main() {
    username, password := "John", "Doe"
    loginCount := 0
    fmt.Println(username, password, loginCount)
}

Bu yöntemde veri tipleri konusunda dikkatli olmalısınız. (İleriki yazılarda Go'da veri tiplerine detaylıca değineceğim.) Örneğin loginCount := 0 olarak tanımladığımızda Go bu değişkenin tipini int olarak belirler; bu da sistem mimariniz ve işletim sisteminize göre int32 veya int64 veri tipine karşılık gelebilir. Siz bu değişken için daha küçük bir int tipi (örneğin int8) öngörüyorsanız, bu şekilde değişken tanımlamak yerine en başta anlatıldığı gibi değişken tipini spesifik olarak belirtmelisiniz.


Go Değişken Tanımlama Yöntemleri Karşılaştırması

YöntemÖrnekKullanım Amacı / Özelliği
Açık Tanımlama (Explicit)var x intDeğişken tipi belirtilir, varsayılan sıfır değeri (zero value) atanır.
Değer Atayarak (Type Inference)var x = 10Go, atanan değere göre tipi otomatik belirler. Fonksiyon dışında kullanılabilir.
Kısa Atama (Short Hand)x := 10Sadece fonksiyonlar içinde geçerlidir. var kelimesine ihtiyaç duymaz.
Sabit Tanımlamaconst x = 10Çalışma zamanında değiştirilemeyen değerler için kullanılır.

Go'da Sabit Tanımlama (Constants)

Kimi zaman değişken değil, sabit tanımlamak isteyebilirsiniz. Go'da bunun için const anahtar kelimesi kullanılır:

const HTTPStatusOK = 200
const HTTPStatusNotFound = 404
const HTTPStatusInternalServerError = 500

Sabit tanımlarken de değişkenlerde olduğu gibi gruplandırma yöntemini seçebiliriz:

const (
    HTTPStatusOK = 200
    HTTPStatusNotFound = 404
    HTTPStatusInternalServerError = 500
)

Go'da iota adı verilen özel bir ardışık sabit tanımlama tipi vardır. Ayrıntılı bilgi için Go'da iota nedir? Iota ne zaman ve nerede kullanılır? başlıklı yazımı okuyabilirsiniz.

Go'da veri tiplerini bir sonraki yazımda inceleyeceğim. Sorunuz olursa yorumlara yazabilirsiniz.

Kapak fotoğrafı Serpstat


Bu Yazıda Yapılan Değişiklikler
  • 11.05.2022: Yazı özeti düzenlendi.
  • 20.06.2026: Kod hatası düzeltildi (fmt.println -> fmt.Println), imla düzeltmeleri yapıldı, TL;DR özet ve karşılaştırma tablosu eklendi.