Menu

Go Hello World: İlk Golang Programınız Satır Satır

Go hello world programı satır satır: package main, import bloğu, func main ve fmt.Println; ayrıca programı nasıl çalıştıracağınız ve yeni başlayanların ilk karşılaştığı derleme hataları.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Programın tamamı burada. Run'a basın.

Bu satırların hiçbiri isteğe bağlı değildir. Sayfanın geri kalanı her birinin ne yaptığını açıklıyor.

Satır Satır

package main

Her Go dosyası, ait olduğu paketi adlandıran bir package ifadesiyle başlar. main adı özeldir: paketi çalıştırılabilir bir program olarak işaretler. Başka herhangi bir ad (package utils, package hello), başka kodların import ettiği ama kendi başına çalışamayan bir kütüphane oluşturur.

import "fmt"

import, kullanabilmeniz için başka bir paketi içeri alır. fmt, standart kütüphanenin biçimlendirme ve yazdırma paketidir. Import'tan sonra dışa açık adlarına paket adı üzerinden ulaşılır: fmt.Println, fmt.Printf, fmt.Sprintf.

Birden fazla paketi import etmek için her satırda bir yol olacak şekilde parantezli bir blok kullanın:

import (
	"fmt"
	"strings"
)

Go, kullanmadığı bir paketi import eden dosyayı derlemeyi reddeder. Bu, bağımlılık listelerini dürüst tutar ve çoğu kişinin karşılaştığı ilk hatadır.

func main()

func bir fonksiyon tanımlar. main paketindeki main giriş noktasıdır: program main başladığında başlar, main döndüğünde biter. Argüman almaz ve hiçbir şey döndürmez. Komut satırı argümanları os.Args'tan, çıkış kodları os.Exit'ten gelir.

fmt.Println("Hello, World!")

Println argümanlarını yazdırır, aralarına bir boşluk koyar ve sonuna yeni satır ekler. Adı büyük harfle başlar, çünkü bir paketten yalnızca büyük harfle başlayan adlar dışa açılır. Küçük p ile yazılan fmt.println derleme hatasıdır.

Bir String'den Fazlasını Yazdırmak

Println her tipten istediğiniz sayıda değer alır. Printf ise biçim üzerinde kontrol verir:

%s bir string ile, %d bir tam sayı ile değiştirilir. Printf ve Print yeni satır eklemez, bu yüzden \n'i kendiniz yazarsınız. Tüm verb tablosu fmt.Printf sayfasındadır.

Kendi Bilgisayarınızda Çalıştırın

Go kuruluyken programı boş bir klasöre main.go olarak kaydedin ve çalıştırın:

go run main.go
Hello, World!

go run dosyayı geçici bir binary'ye derler ve çalıştırır. Saklayıp başka bir yere kopyalayabileceğiniz bir binary üretmek için go build kullanın:

go mod init example.com/hello
go build
./hello
Hello, World!

go build bir modüle (bir go.mod dosyasına) ihtiyaç duyar; onu go mod init oluşturur. Binary, modül yolunun son parçasıyla adlandırılır, burada hello (Windows'ta hello.exe). run, build ve install arasındaki fark go run ve go build sayfasında anlatılıyor.

Noktalı Virgüller Nereye Gitti

Go'nun grameri noktalı virgül kullanır, ama siz neredeyse hiç yazmazsınız. Derleyici, son token'ı bir ifadeyi bitirebilecek her satırın sonuna bir tane ekler: bir tanımlayıcı, bir literal, ), } ve return gibi birkaç anahtar kelime. Diğer dillerden alışık olunan şu stilin başarısız olmasının nedeni bu kuraldır:

func main()
{
	fmt.Println("Hello, World!")
}
./main.go:6:1: syntax error: unexpected semicolon or newline before {

func main() sonrasına bir noktalı virgül eklendi, bu yüzden bir sonraki satırdaki { hatadır. Açılış süslü parantezi her zaman aynı satıra gelir. Aynı kural if, for, switch ve diğer tüm bloklar için geçerlidir.

İlk Hatalar ve Açıklamaları

Bunlar yeni başlayanların ilk saatlerinde gördüğü mesajlardır; tam olarak Go 1.24'ün yazdırdığı haliyle.

Kullanılmayan bir import ya da değişken.

package main

import (
	"fmt"
	"os"
)

func main() {
	x := 5
	fmt.Println("hi")
}
./main.go:5:2: "os" imported and not used
./main.go:9:2: declared and not used: x

İkisi de uyarı değil, derleme hatasıdır. Import'u ya da değişkeni silin. Hata ayıklama sırasında bir değişkeni tutmanız gerekiyorsa onu boş tanımlayıcıya atayın: _ = x.

Küçük harfli fonksiyon adı.

./main.go:6:6: undefined: fmt.println

Dışa açılmamış adlar paketlerinin dışından görünmez. fmt.Println kullanın.

Yanlış paket adı.

package example.com/hello is not a main package

Dosyada package hello (ya da main dışında herhangi bir şey) yazıyor ve siz onu çalıştırmaya çalıştınız. package main olarak değiştirin.

Eksik modül.

go: go.mod file not found in current directory or any parent directory; see 'go help modules'

go build ve go run . modüller üzerinde çalışır. Klasörde bir kez go mod init example.com/hello çalıştırın. Bir dosya adı veren go run main.go ise modül olmadan da çalışır.

Biçimlendirme

Go'nun tek bir resmi kod stili vardır ve gofmt onu uygular. Yazdığınız her dosyada çalıştırın:

go fmt ./...

Girinti için tab kullanır, yorumları ve struct alanlarını hizalar, boşlukları düzenler. Go desteği olan editörler bunu kaydederken çalıştırır. Go kodu her yerde aynı görünür, bu yüzden ayarlanacak bir şey de, kod incelemesinde tartışılacak bir şey de yoktur.

Sıkça Sorulan Sorular

Go'da hello world nasıl yazılır?

Şunu main.go olarak kaydedin:

package main

import "fmt"

func main() {
	fmt.Println("Hello, World!")
}

Ardından go run main.go komutunu çalıştırın. Ekrana Hello, World! yazar.

Bir Go programı neden package main'e ihtiyaç duyar?

package main, derleyiciye bu paketin bir kütüphane değil çalıştırılabilir bir program olduğunu söyler. Program, main paketinin main fonksiyonundan başlar. Başka herhangi bir paket adı bir kütüphane üretir ve go run onu "is not a main package" hatasıyla reddeder.

Go'da açılış süslü parantezi neden aynı satırda olmak zorunda?

Go, bir ifadeyi bitirebilecek satırların sonuna otomatik olarak noktalı virgül ekler; func main() sonrası da buna dahildir. Bir sonraki satırdaki { bu durumda ayrı bir blok başlatır ve derleyici syntax error: unexpected semicolon or newline before { hatası verir. Süslü parantez aynı satırda olmalıdır.

Go'da fmt ne anlama gelir?

fmt, biçimlendirilmiş girdi ve çıktı için standart kütüphane paketidir (adı "format" kelimesinin kısaltmasıdır). fmt.Println argümanlarını aralarına boşluk koyarak ve sonuna yeni satır ekleyerek yazdırır; fmt.Printf ise bir format string'i kullanarak yazdırır.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA