Grow with AppMaster Grow with AppMaster.
Become our partner arrow ico

Go'nun Temelleri

Go'nun Temelleri

Go Diline Giriş

Golang olarak da bilinen Go , Google mühendisleri Robert Griesemer, Rob Pike ve Ken Thompson tarafından geliştirilen açık kaynaklı bir programlama dilidir. Basit, verimli ve güvenilir olacak şekilde tasarlanmıştır. Go, özellikle sunucu tarafı ve arka uç altyapı sistemleri alanlarında modern uygulama geliştirme için idealdir. Basit sözdizimi, yerleşik eşzamanlılık desteği ve mükemmel performansı ile Go, web uygulamaları, mikro hizmetler ve dağıtılmış sistemler oluşturmak için geliştiriciler arasında popüler bir seçim haline geldi.

Go'nun ekosistemi, piyasaya sürüldüğü 2009'dan bu yana hızla büyüyerek geliştiricilerin yararlanabileceği çok çeşitli kitaplıklar ve araçlar sunuyor. Dropbox, Uber ve Docker gibi şirketler, temel arka uç sistemleri için Go'yu seçerek günümüzün teknoloji ortamındaki önemini ve alaka düzeyini daha da vurguladılar.

Bu makale, Go programlama yolculuğunuza başlamanızı sağlayacak temel dil özelliklerine odaklanarak size Go ve sözdiziminde sağlam bir temel sağlamayı amaçlamaktadır.

Go'yu Yükleme ve Ayarlama

Go ile çalışmaya başlamadan önce dili bilgisayarınıza yüklemeniz gerekir. Başlamak için şu adımları izleyin:

  1. Resmi Go web sitesini ziyaret edin ve işletim sisteminiz için uygun kurulum dosyasını indirin.
  2. İndirilen dosyayı açın ve yükleyici tarafından sağlanan kurulum talimatlarını izleyin.
  3. PATH ortam değişkenini Go'nun kurulum dizinini içerecek şekilde ayarlayın. Bu, Go komutlarının komut satırından kullanılabilir olmasını sağlayacaktır. Unix sistemlerinde, .bashrc veya .profile dosyanıza genellikle aşağıdaki satırı ekleyebilirsiniz:
    export PATH=$PATH:/usr/local/go/bin
  4. Değişiklikleri uygulamak için terminalinizi veya komut isteminizi yeniden başlatın.
  5. Terminalinizde aşağıdaki komutu çalıştırarak Go'nun doğru şekilde kurulduğunu onaylayın:
    go version
    Yükleme başarılı olursa, çıktıda bilgisayarınızda yüklü olan Go sürümü görüntülenecektir.

Artık Go bilgisayarınızda kurulu olduğuna göre, dilin temellerine dalmanın zamanı geldi.

Go Söz Dizimini ve Veri Türlerini Anlamak

Go'nun sözdizimi basit ve okunması kolay olacak şekilde tasarlanmıştır. Burada paketler, içe aktarmalar, değişkenler ve temel veri türleri dahil olmak üzere bazı temel dil öğelerini ele alacağız.

Paketler ve İthalatlar

Go programları, kodu modülerleştirmeye ve yönetmeye yardımcı olan packages halinde düzenlenmiştir. Paket, temelde bir veya daha fazla Go kaynak dosyası içeren bir dizindir. Her Go dosyasının ilk satırı, ait olduğu paketi bildirmelidir:

 package main

Yukarıdaki örnekte kaynak dosya "ana" pakete aittir. Paket bildirimini izleyen kod bloğu, genellikle programınız için gereken diğer paketleri içeren import ifadelerinden oluşur:

 import ( "fmt" "math" )

import deyimi, geçerli dosyaya içe aktarılacak paketleri belirtir ve bu paketlerin işlevler ve değişkenler gibi dışa aktarılan özelliklerine erişmenize olanak tanır.

Programming language

Değişkenler ve Sabitler

Go'daki değişkenler, var anahtar sözcüğü ve ardından değişken adı, türü ve isteğe bağlı başlangıç ​​değeri kullanılarak bildirilebilir:

 var x int = 10

İlk değer sağlanırsa Go, türü anlayabilir ve tür bildirimini atlamanıza olanak tanır:

 var x = 10 // x is an int

Ayrıca, Go'nun türü otomatik olarak anlayan ve bir başlangıç ​​değeri atayan kısa değişken bildirimi sözdizimini de kullanabilirsiniz:

 x := 10 // x is an int

Sabitler const anahtar sözcüğü kullanılarak bildirilebilir. Değerleri derleme zamanında bilinmelidir ve program yürütülürken değiştirilemez:

 const PI = 3.14159

Temel Veri Türleri

Go, aşağıdakiler de dahil olmak üzere birkaç temel veri türüne sahiptir:

  • Tamsayılar: İşaretli tamsayılar int , int8 , int16 , int32 veya int64 kullanılarak bildirilebilir. İşaretsiz tamsayılar uint , uint8 , uint16 , uint32 veya uint64 ile tanımlanabilir.
  • Kayan Noktalı Sayılar: Bunlar, float32 veya float64 kullanılarak tanımlanabilir.
  • Karmaşık Sayılar: Karmaşık sayılar complex64 veya complex128 kullanılarak bildirilir.
  • Boolean: Boolean, bool veri türüyle temsil edilir ve true veya false değerine sahip olabilir.
  • Dizeler: Go dizeleri, UTF-8 kodlu karakter dizileridir. Değişmezler ve uzunlukları çalışma zamanında belirlenir.

Ek olarak Go, aşağıdakiler gibi bileşik veri türlerini destekler:

  • Diziler: Aynı türdeki öğelerin sabit uzunluklu dizileri.
  • Dilimler: Aynı türdeki elemanların dinamik uzunluktaki dizileri.
  • Haritalar: Anahtarların ve değerlerin belirtilen herhangi bir türde olabildiği, sıralanmamış anahtar/değer çiftleri koleksiyonları.

Go'yu öğrenmeye devam ettikçe, daha karmaşık ve çok yönlü uygulamalar oluşturmak için bu temel veri türlerini ve yapılarını birleştirebileceksiniz.

Go'daki İşlevler ve Yöntemler

İşlevler, herhangi bir programlama dilinin temel yapı taşlarından biridir ve Go da bir istisna değildir. Go'daki işlevler, func anahtar kelimesi ve ardından işlev adı, giriş parametreleri, dönüş türü ve işlev gövdesi kullanılarak tanımlanır. Go'daki işlevler birden çok değer döndürerek karmaşık işlemleri ve hata denetimini kolaylaştırabilir.

İşte basit bir Git işlevi örneği:

 package main import ( "fmt" ) func add(a int, b int) int { return a + b } func main() { result1 := add(5, 7) fmt.Println("The sum is:", result1) }

Bu örnekte, iki tamsayı parametresi alan ve bunların toplamını döndüren basit bir add işlevi tanımlıyoruz. Fonksiyon daha sonra main fonksiyondan çağrılır ve sonuç yazdırılır.

Try AppMaster no-code today!
Platform can build any web, mobile or backend application 10x faster and 3x cheaper
Start Free

Go'daki Yöntemler

Go'daki yöntemler, işlevlere benzer, ancak belirli bir alıcı türüyle ilişkilendirilirler ve alıcı türünün bir örneğinde çağrılırlar. Bu, nesne yönelimli programlama dillerinin sınıflardaki yöntemleri nasıl tanımladığına benzer şekilde, mevcut türlere davranış eklemeyi mümkün kılar. İşte bir örnek:

 package main import ( "fmt" ) type Circle struct { radius float64 } func (c Circle) area() float64 { return 3.14159 * c.radius * c.radius } func main() { myCircle := Circle{radius: 5} circleArea := myCircle.area() fmt.Printf("The area of the circle is: %.2f\n", circleArea) }

Bu örnekte, radius alanı olan bir Circle yapısı tanımlıyoruz. Circle tipi için area adlı bir metot tanımlanır. Bu yöntem, yarıçapı kullanarak dairenin alanını hesaplar ve sonucu bir float64 değeri olarak döndürür.

Go'daki Kontrol Yapıları

Kontrol yapıları, programın akışını dikte ettikleri için herhangi bir programlama dilinin temelidir. Go, koşullu dallanma, döngü ve çoklu koşul kontrolleri veya iletişim işlemleri için çeşitli kontrol yapıları sunar.

If İfadeleri

Go'da, koşullu dallanma genellikle if ifadeleri kullanılarak yapılır. Bu ifadeler, bir boole ifadesini değerlendirir ve doğruysa, ifadeyi izleyen kod bloğunu yürütür. İşte bir örnek:

 package main import ( "fmt" ) func main() { number := 42 if number%2 == 0 { fmt.Println("The number is even.") } else { fmt.Println("The number is odd.") } }

Bu örnekte, modulo operatörünü ve bir if ifadesini kullanarak bir sayının çift mi tek mi olduğunu kontrol ediyoruz.

Döngüler için

Go'nun yalnızca bir tür döngüsü vardır: for döngüsü. Her türlü döngü senaryosu için kullanılabilir: sabit yinelemeler, sonsuz döngüler ve "while" döngüleri. İşte bir örnek:

 package main import ( "fmt" ) func main() { for i := 1; i <= 5; i++ { fmt.Println("Iteration:", i) } }

Bu örnekte, beş kez yinelemek ve geçerli yineleme numarasını yazdırmak için sayaçlı bir for döngüsü kullanıyoruz.

Deyimleri Değiştir ve Seç

Go, çoklu koşul denetimleri için switch deyimini ve iletişim işlemleri için select deyimini sağlar. İşte bir switch ifadesi örneği:

 package main import ( "fmt" ) func main() { grade := "B" switch grade { case "A": fmt.Println("Excellent!") case "B": fmt.Println("Good") case "C": fmt.Println("Fair") case "D": fmt.Println("Poor") default: fmt.Println("Invalid grade") } }

Bu örnekte, giriş notunu kontrol etmek ve ilgili performans açıklamasını yazdırmak için bir switch deyimi kullanıyoruz. Diğer dillerden farklı olarak Go, eşleşen bir durumu yürüttükten sonra switch ifadesinden çıktığı için her case bloğunun sonunda bir break ifadesi gerektirmez.

Go'da eşzamanlılık

Go'nun en güçlü özelliklerinden biri, Goroutines ve Channels kullanarak eşzamanlılık için yerleşik desteğidir. Eşzamanlılık, birden çok yürütme iş parçacığının aynı anda çalışmasına izin vererek uygulamalarda daha yüksek performans ve yanıt verebilirlik sağlar.

gorutinler

Goroutinler, Go'da hafif, eşzamanlı işlev yürütmeleridir. Bir Goroutine oluşturmak için go anahtar sözcüğünü bir işlev çağrısının başına eklemeniz yeterlidir. İşlev, aynı adres alanını paylaşan programın geri kalanıyla eşzamanlı olarak yürütülmeye başlar. İşte bir örnek:

 package main import ( "fmt" "time" ) func display(message string) { for i := 0; i < 5; i++ { fmt.Println(message) time.Sleep(1 * time.Second) } } func main() { go display("Hello") go display("World") // Let Goroutines finish before exiting time.Sleep(5 * time.Second) }

Bu örnekte, mesajları görüntüleyen ve tekrarlamadan önce bir saniye duraklayan iki Goroutin oluşturuyoruz. Ana işlev, programdan çıkmadan önce Goroutinlerin bitmesini sağlamak için beş saniye bekler.

Kanallar

Kanallar, Goroutinler arasındaki iletişim araçlarıdır. Goroutinlerin güvenli bir şekilde değer göndermesine ve almasına izin verirler. İşte bir örnek:

 package main import ( "fmt" ) func producer(numbers chan<- int) { for i := 1; i <= 5; i++ { fmt.Println("Produced:", i) numbers <- i } close(numbers) // Close the channel when done } func consumer(numbers <-chan int) { for number := range numbers { fmt.Println("Consumed:", number) } } func main() { numbers := make(chan int) go producer(numbers) go consumer(numbers) // Let the Goroutines finish time.Sleep(1 * time.Second) }

Bu örnekte, sayılar üreten ve bunları bir kanala gönderen bir producer Goroutine ve kanaldan alınan sayıları işleyen bir consumer Goroutine oluşturuyoruz. Kanalları kullanarak Goroutinler arasında güvenli iletişim sağlıyoruz.

Goroutines ve Channels kullanan Go'daki eşzamanlılık, eşzamanlı uygulamaların geliştirilmesini basitleştirerek onları daha verimli, güvenilir ve anlaşılması kolay hale getirir.

Go Kodu Yazmak İçin En İyi Uygulamalar

Temiz, sürdürülebilir ve verimli Go kodu yazmak, güçlü uygulamalar geliştirmek ve uzun vadeli başarı sağlamak için çok önemlidir. Go ile çalışırken izlemeniz gereken bazı en iyi uygulamalar şunlardır:

Try AppMaster no-code today!
Platform can build any web, mobile or backend application 10x faster and 3x cheaper
Start Free

Uygun Adlandırma Kuralları

Adlandırma kuralları, Go kodunuzu anlaşılır ve sürdürülebilir hale getirmede çok önemli bir rol oynar. Go'da adlandırma için şu yönergeleri izleyin:

  • Paket adları küçük harf, kısa ve öz olmalıdır. Alt çizgi veya karışık büyük/küçük harf adları kullanmaktan kaçının.
  • Değişken, işlev ve yöntem adları camelCase içinde, ilk sözcük hariç her sözcüğün ilk harfi büyük olacak şekilde olmalıdır.
  • Diğer paketlerden erişilebilen işlevler, yöntemler ve değişkenler gibi dışa aktarılan tanımlayıcılar büyük harfle başlamalıdır.
  • Tanımlandıkları paketle sınırlı olan dışa aktarılmamış tanımlayıcılar küçük harfle başlamalıdır.

Uygun Biçimlendirme

Go kodunuz genelinde tutarlı bir formata bağlı kalmak, onu okumayı ve anlamayı çok daha kolaylaştırır. Go topluluğu, kodunuzu önerilen yönergelere göre otomatik olarak biçimlendiren gofmt adlı bir araç geliştirdi. Kodunuzun tutarlı bir stile bağlı kalmasını sağlamak için bu aracı kullanın.

Kısa ve Odaklanmış İşlevler Yazma

İşlevlerinizin ve yöntemlerinizin kısa olduğundan ve tek bir amaca odaklandığından emin olun. Bu, okunabilirliği, sürdürülebilirliği artırır ve testi basitleştirir. Birçok farklı sorumluluğu olan tek bir işlev yazmak yerine, onu daha küçük, daha spesifik işlevlere bölün. Bu yaklaşım, kodun uygulamanızın farklı bölümlerinde yeniden kullanılmasına da yardımcı olur.

Katı Hata İşleme

Hata işleme, Go programlamanın temel bir yönüdür. Go, istisnalara güvenmek yerine hataları açıkça ele almanızı teşvik eder. Bir işlev bir hata döndürdüğünde, her zaman kontrol edin ve uygun şekilde işleyin. Hataların varlığında programınızın doğru şekilde davranmasını sağlamak için deyimsel if err != nil kalıbını kullanın. Ek olarak, sizin ve diğer geliştiricilerin sorunları daha kolay tanımlayıp teşhis etmesine yardımcı olmak için hata mesajlarınızda bağlam sağlayın.

Kapsamlı Birim Testleri Yazın

Birim testleri yazmak, Go kodunuzun doğruluğunu ve güvenilirliğini sağlamak için gereklidir. Go, test paketi aracılığıyla test için yerleşik desteğe sahiptir. Davranışlarını doğrulamak ve kodunuzda değişiklik yaparken olası sorunları tespit etmek için tek tek işlevler, yöntemler ve paketler için testler yazın. Hataları önlemek ve kodunuza olan güveni artırmak için bakımı yapılabilir ve kapsamlı testler yazmaya zaman ayırın.

Go Paketlerini ve Kitaplıkları Akıllıca Kullanın

Go, hem standart kitaplıktan hem de daha geniş topluluktan birçok kitaplık ve paket içeren güçlü bir ekosisteme sahiptir. Kitaplıkları kullanırken zamandan tasarruf edebilirsiniz, dış bağımlılıkları seçerken dikkatli olun. Bir karar vermeden önce her zaman saygın, iyi belgelenmiş kitaplıkları tercih edin ve birden çok seçeneği değerlendirin. Ek olarak, olası güvenlik ve performans sorunları için bağımlılık listenizi yönetilebilir ve izlenebilir tutun.

Kodunuzu Belgeleyin

Açık ve öz yorumlar yazın ve kodunuzu Go'nun doc kurallarını kullanarak belgeleyin. Kodunuzu yeterli yorumlar, açıklamalar ve örneklerle belgelemek, uzun vadeli bakım ve ekip çalışması için çok önemlidir.

Go için Popüler Kullanım Örnekleri ve Kitaplıklar

Go, çok sayıda kullanım durumu olan çok yönlü bir programlama dilidir. Go için en popüler uygulama alanlarından bazıları şunlardır:

  • Sunucu tarafı programlama ve web hizmetleri
  • Ağ ve dağıtık sistemler
  • Mikro hizmet mimarisi
  • DevOps ve CLI araçları

Go ekosistemindeki ortak geliştirme ihtiyaçlarını karşılayan bazı popüler kitaplıkların ve çerçevelerin bir listesi:

Web Çerçeveleri ve Kitaplıkları

  • Gin: Martini benzeri bir API ile hızlı, basit ve hafif bir web çerçevesi.
  • Echo: Go için yüksek performanslı, genişletilebilir ve minimalist bir web çerçevesi.
  • Revel: Başlamak için yapılandırma veya standart kod gerektirmeyen tam yığın bir web çerçevesi.

API ve Protokol Araçları

  • gRPC: Yüksek performanslı, açık kaynaklı evrensel bir RPC çerçevesi.
  • Gorilla Mux: Go web uygulamaları ve API'ler oluşturmak için güçlü bir URL yönlendiricisi ve dağıtıcı kitaplığı.

Veritabanı Sürücüleri ve Yardımcıları

  • GORM: Go için PostgreSQL , MySQL , SQLite ve daha fazlası gibi çeşitli veritabanı sistemlerini destekleyen harika bir ORM kitaplığı.
  • sqlx: Standart paketle uyumluluğu korurken veritabanı işlemlerini basitleştiren ve geliştiren standart veritabanı/sql paketinin bir uzantısı.

Bu kitaplıkların yanı sıra Go standart kitaplığı, ağ oluşturma, G/Ç, veri yapıları, algoritmalar ve daha fazlası gibi çok çeşitli işlevlerle çalışmak için birçok yararlı paket sunar.

No-Code Platform

Go programlama dilini öğrenmenin ve popüler kitaplıkları/API'leri kullanmanın başarılı bir uygulama oluşturmanın yalnızca bir yönü olduğunu belirtmekte fayda var. Geliştirme sürecinizi gerçekten hızlandırmak ve teknik borcu ortadan kaldırmak için AppMaster'ı denemeyi düşünebilirsiniz.   — görsel bir arayüz kullanarak arka uç, web ve mobil uygulamalar oluşturmanıza ve aynı zamanda hiçbir teknik borç olmadan otomatik olarak kaynak kodu oluşturmanıza olanak tanıyan kodsuz bir platform . AppMaster platformuyla Go uygulamalarınız, çok çeşitli işlevleri ve kullanım durumlarını kapsayacak şekilde 10 kata kadar daha hızlı ve 3 kata kadar daha uygun maliyetli geliştirilebilir.

Kodsuz platform nedir ve Go ile nasıl bir ilişkisi vardır?

Kodsuz bir platform, kullanıcıların geleneksel kod yazmadan yazılım uygulamaları oluşturmasına olanak tanır. Bu platformlar, kullanıcıların hızlı ve kolay bir şekilde uygulama oluşturmak için yapılandırabilecekleri görsel bir arayüz ve önceden oluşturulmuş bileşenler sağlar. Go kendi başına no-code bir dil olmasa da, AppMaster.io gibi no-code platformlarla entegre edilebilir. AppMaster.io, kullanıcıların kodlama becerilerine ihtiyaç duymadan görsel bir arayüz kullanarak özel uygulamalar oluşturmasına olanak tanıyan özel bir no-code platformdur. drag-and-drop işlevi, önceden oluşturulmuş şablonlar ve çeşitli veri kaynakları ve API'lerle entegrasyon seçenekleri sunar.

Go'yu diğer programlama dillerinden farklı kılan nedir?

Go, derlenmiş bir dilin performansını bir betik dilinin basitliği ve okunabilirliği ile birleştirir. Eşzamanlılık, çöp toplama için yerleşik desteğe ve basitlik ile netliğe güçlü bir odaklanmaya sahiptir.

Go eşzamanlılığı nasıl ele alıyor?

Go, rutinler ve kanallar aracılığıyla eşzamanlılık için yerleşik desteğe sahiptir. Goroutinler, kolayca eşzamanlı kod yazmanıza izin veren hafif iş parçacıklarıdır. Kanallar, goroutinler arasındaki iletişim ve senkronizasyon için kullanılır.

Git nedir?

Golang olarak da bilinen Go, Google'da 2007'de oluşturulan açık kaynaklı bir programlama dilidir. Verimlilik, basitlik ve ölçeklenebilirlik için tasarlanmıştır.

Go, büyük ölçekli uygulamalar için uygun mu?

Kesinlikle! Go'nun basitliği ve yerleşik eşzamanlılık desteği, onu büyük ölçekli uygulamalar geliştirmek için harika bir seçim haline getiriyor. Google dahil birçok şirket, yüksek performanslı, ölçeklenebilir sistemler oluşturmak için Go'yu kullanır.

Go, web geliştirme için uygun mu?

Evet, Go'nun onu web geliştirmeye uygun hale getiren bir dizi kitaplığı ve çerçevesi vardır. Go'da web geliştirme için en popüler çerçeve "Gin" olarak adlandırılır, ancak Echo, Revel ve Beego gibi birkaç tane daha vardır.

Go'nun temel özellikleri nelerdir?

Go, statik yazma, otomatik bellek yönetimi (çöp toplama), eşzamanlı programlama için yerleşik destek (goroutinler ve kanallar), basit ve etkileyici bir sözdizimi ve zengin bir standart kitaplık gibi özellikler içerir.

Go'nun bir paket yönetim sistemi var mı?

Evet, Go'nun "go modülleri" adı verilen yerleşik bir paket yönetim sistemi vardır. Bağımlılıkları yönetmenize ve harici paketleri kolayca projelerinize aktarmanıza olanak tanır.

İlgili Mesajlar

Çevrimiçi Eğitimde LMS'nin Rolü: E-Öğrenmeyi Dönüştürmek
Çevrimiçi Eğitimde LMS'nin Rolü: E-Öğrenmeyi Dönüştürmek
Öğrenme Yönetim Sistemlerinin (LMS) erişilebilirliği, katılımı ve pedagojik etkinliği artırarak çevrimiçi eğitimi nasıl dönüştürdüğünü keşfedin.
Telemedikal Platform Seçerken Dikkat Edilmesi Gereken Temel Özellikler
Telemedikal Platform Seçerken Dikkat Edilmesi Gereken Temel Özellikler
Güvenlikten entegrasyona kadar telemedikal platformlardaki kritik özellikleri keşfedin ve kesintisiz ve verimli uzaktan sağlık hizmeti sunumunu garantileyin.
Klinikler ve Hastaneler İçin Elektronik Sağlık Kayıtlarının (EHR) Uygulanmasının En Önemli 10 Faydası
Klinikler ve Hastaneler İçin Elektronik Sağlık Kayıtlarının (EHR) Uygulanmasının En Önemli 10 Faydası
Hasta bakımını iyileştirmekten veri güvenliğini artırmaya kadar, klinik ve hastanelerde Elektronik Sağlık Kayıtları'nın (EHR) tanıtılmasının en önemli on faydasını keşfedin.
ÜCRETSİZ BAŞLAYIN
Bunu kendin denemek için ilham aldın mı?

AppMaster'ın gücünü anlamanın en iyi yolu, onu kendiniz görmektir. Ücretsiz abonelik ile dakikalar içinde kendi başvurunuzu yapın

Fikirlerinizi Hayata Geçirin