Go ve Değişkenler

Sayfayı kopyala
💡 Özet (TL;DR):
- Değişken Tanımlama: Go'da değişkenler
varanahtar 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
constanahtar kelimesi kullanılır. Ardışık sabit değerleri otomatik artırmak içiniotatercih 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 | Örnek | Kullanım Amacı / Özelliği |
|---|---|---|
| Açık Tanımlama (Explicit) | var x int | Değişken tipi belirtilir, varsayılan sıfır değeri (zero value) atanır. |
| Değer Atayarak (Type Inference) | var x = 10 | Go, atanan değere göre tipi otomatik belirler. Fonksiyon dışında kullanılabilir. |
| Kısa Atama (Short Hand) | x := 10 | Sadece fonksiyonlar içinde geçerlidir. var kelimesine ihtiyaç duymaz. |
| Sabit Tanımlama | const 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.
