Go dili, şimdiye kadar az veya çok incelediğim programlama dillerinden farklı bir yapıya sahip. Diğer dillerin zor ve gereksiz kısımlarını kolaylaştıralım düşüncesiyle yola çıkmış geliştiriciler. İyi mi etmişler, kötü mü etmişler bilemedim.
Örneğin fonksiyon içinde değişken tanımlama işlemi aşağıdaki gibi kısaca yapılabiliyor.
func main() {
isim := "Ahmet" //string olarak tanımlanır.
yas := 25 // int olarak tanımlanır
}
//Go dili, atanan değere bakarak değişkenin tipini otomatik olarak //belirler (type inference). İlk değer verilmesi zorunludur.
***Yukarıdaki şekilde kısa değişken tanımlama işlemi sadece fonksiyon içinde yapılabilir***
Veya aşağıdaki gibi klasik yöntem ile de değişken tanımlanabilir.
var sehir string = "Denizli"
Ben klasik yöntemi tercih ediyorum, çünkü yeni öğrendiğim bir programlama dilinin söz dizimini öğrenmek zaten zorluyor, bir de aynı işi farklı ve alışılmadık şekilde yapmayı öğrenmek en azından başlangıç aşamasında tercih ettiğim birşey değil.
Yine diğer dillerdeki public, private anahtar kelimeleri Go dilinde yok. Bunun yerine, büyük harf / küçük harf ile başlama durumuna göre public veya private olma durumu var.
Go’da görünürlüğe tek bir kural karar verir: bir ad büyük harfle başlıyorsa dışa açıktır. Bu; fonksiyonlar, tipler, değişkenler, sabitler, struct alanları ve metotlar için geçerlidir.
Örneğin bir fonksiyonun diğer paketlerden çağrılabilmesi (kamuya açık/public olması) için adının mutlaka büyük harfle başlaması gerekir. Küçük harfle başlarsa gizli (private) kalır.
Aşağıda, test.go dosyasına “EkranaYaz” adında bir fonksiyon tanımladık ve dikkat ederseniz fonksiyonun ilk harfi büyük. Yani bu fonksiyon diğer paketler/go dosyalarındaki fonksiyonlar tarafından çağrılabilir.
test.go
package test
import "fmt"
// DİKKAT: Fonksiyon adı BÜYÜK harfle başlamalıdır (EkranaYaz)
func EkranaYaz(mesaj string) {
fmt.Println("Test paketinden gelen mesaj:", mesaj)
}
Aşağıda main.go dosyasında da, yukarıdaki test.go dosyasında tanımladığımız “EkranaYaz” fonksiyonunu çağırıyoruz.
main.go
package main
import (
"fmt"
"hello/test" // Kendi oluşturduğumuz paketi import ediyoruz!
)
func main() {
fmt.Println("Ana program başladı.")
// test paketindeki EkranaYaz fonksiyonunu çağırıyoruz
test.EkranaYaz("Merhaba Dunya!")
}
