Paketler: Go Kodunu Düzenleme
Paket bildirimleri, içe aktarmalar ve dışa aktarılan adlar
Paketler: Go Kodunu Düzenleme, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
Paket Nedir?
Her Go kaynak dosyası bir pakete aittir. Paket adı her dosyanın en üstünde yer alır. Paketler ilişkili kodları gruplar ve görünürlüğü denetler:
// file: math/calc.go
package math
// Exported — accessible from other packages (capital letter)
func Add(a, b int) int { return a + b }
// Unexported — package-private (lowercase)
func helper() int { return 42 }Paket Bildirimi ve İçe Aktarma Yolu
Paket adı (kısa), içe aktarma yolundan (tam modül yolu/dizin) farklıdır:
// Import path: github.com/myapp/util/stringutil
// Package name: stringutil (last segment by convention)
package stringutil
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}Paketleri İçe Aktarma
Diğer paketleri içeri almak için import kullanın. Go, tüm içe aktarmaların kullanılmasını zorunlu kılar:
package main
import (
"fmt" // standard library
"strings" // standard library
"github.com/myapp/util/math" // third-party or local
)
func main() {
fmt.Println(strings.ToUpper("hello"))
fmt.Println(math.Add(1, 2))
}Dışa Aktarılan ve Dışa Aktarılmayan Tanımlayıcılar
Büyük harfle başlayan tanımlayıcılar dışa aktarılır (genel kullanıma açıktır). Küçük harfle başlayanlar dışa aktarılmaz (yalnızca paket içinde kullanılabilir):
package server
// Exported: accessible from other packages
type Server struct {
Addr string // exported field
timeout int // unexported field
}
// Exported method
func (s *Server) Start() error { return nil }
// Unexported helper
func (s *Server) listen() {}main Paketi ve main İşlevi
main paketi özeldir; çalıştırılabilir bir program tanımlar. main işlevi giriş noktasıdır:
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
// Program starts here and ends here
}
// All other packages are libraries — no main() neededinit() İşlevi
Her pakette, main() işlevinden önce otomatik olarak ve bildirim sırasına göre çalışan bir veya daha fazla init() işlevi bulunabilir:
package config
import "fmt"
var DB string
func init() {
DB = "localhost:5432/mydb"
fmt.Println("config package initialized")
}
// init runs once when the package is first imported
// Multiple init() functions per file/package are allowedYalnızca Yan Etkiler İçin Boş İçe Aktarma
Bir paketi yalnızca init() işlevinin yan etkileri için boş tanımlayıcıyı kullanarak içe aktarın:
package main
import (
"database/sql"
_ "github.com/lib/pq" // registers PostgreSQL driver via init()
)
func main() {
db, err := sql.Open("postgres", "host=localhost dbname=test")
_ = db
_ = err
}Takma Adla İçe Aktarma
Ad çakışmalarını önlemek veya daha kısa bir kullanım sağlamak için içe aktarma sırasında paketi yeniden adlandırın:
package main
import (
"fmt"
gomath "math" // alias to avoid collision
mymath "github.com/me/math"
)
func main() {
fmt.Println(gomath.Sqrt(16)) // 4
fmt.Println(mymath.Add(1, 2)) // 3
}Paket Adlandırma Kuralları
Go paketleri için adlandırma kuralları:
- Kısa, küçük harfli ve tek sözcüklü adlar kullanın:
http,json,fmt - Dizin adıyla eşleşmelidir:
util/stringutil/→stringutilpaketi - Paket adlarında alt çizgi veya camelCase kullanmayın
util,common,helpergibi genel adlardan kaçının- Paket adı tanımlayıcının bir parçasıdır:
httplib.HTTPClientyerinehttp.Clientkullanmayı tercih edin
Döngüsel İçe Aktarmalar
Go, döngüsel içe aktarmalara izin vermez. B paketi A'yı içe aktarıyorsa A paketi B'yi içe aktaramaz. Ortak kodu üçüncü bir pakete çıkararak sorunu çözün:
// WRONG: A imports B, B imports A — compile error
// package a imports "myapp/b"
// package b imports "myapp/a"
// SOLUTION: extract shared types to package c
// package a imports "myapp/c"
// package b imports "myapp/c"
// No circular dependencyKısa Kontrol
Go'da bir tanımlayıcının dışa aktarılmasını sağlayan nedir?
Özet: Paketler
Temel paket kavramları:
- Her dosya
package nameile başlar - Büyük harf = dışa aktarılan (genel), küçük harf = dışa aktarılmayan (yalnızca paket içinde)
- Tam yolla içe aktarın, kısa paket adıyla kullanın
init(),main()işlevinden önce otomatik olarak çalışır- Yalnızca yan etkiler için boş içe aktarma:
_ "pkg" - Döngüsel içe aktarmalara izin verilmez
Sıkça Sorulan Sorular
“Paketler: Go Kodunu Düzenleme” dersi ücretsiz mi?
Evet — “Paketler: Go Kodunu Düzenleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Paketler: Go Kodunu Düzenleme” dersinde ne öğreneceğim?
Paket bildirimleri, içe aktarmalar ve dışa aktarılan adlar Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Paketler: Go Kodunu Düzenleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Paketler: Go Kodunu Düzenleme
- go mod ile Go Modülleri
- Harici Bağımlılık Ekleme
- Dahili Paketler ve Çalışma Alanları