Go(Lang)'in Temellerini Öğrenelim - Webmaster Forum - MacawForum.com
 

GoLang Golang, Go programlama dili nedir, Go dokümantasyonu, örnekleri, tutorial ve dersleri, Golang example, go programming language bilgi istek alanı


Go(Lang)'in Temellerini Öğrenelim

GoLang


Cevapla Yeni Konu Aç
 
LinkBack Seçenekler Stil
  #1  
Alt 21 Kasım 2020, 21:21:14
xtaletoaum - ait Kullanıcı Resmi (Avatar)
Aktif Üye
 
Şubesi
Üyelik Tarihi: 24 Nisan 2018
Mesajlar: 9.976
Konular: 980
Aldığı Beğeni: 0
Verdiği Beğeni: 0
Standart Go(Lang)'in Temellerini Öğrenelim

Selamlar herkese, bu konuda sizlere Go dilinin temellerinden bahsedeceğim. İyi okumalar dilerim

Resmi tam boyutlu olarak görmek için tıklayın.

Go(Lang) Nedir?

GoLang, Google tarafından 2007 yılında geliştirilmeye başlanan bir açık-kaynak programlama dilidir. Sistem programlama(system programming) için tasarlanmıştır ve derlenmiş(compiled), statik tipli(static typed) bir dildir. Windows, Linux, OS X gibi popüler sistemleri desteklemekle beraber 2015 yılında akıllı telefonlar için de geliştirilmeye başlanmıştır. Çapraz platform(cross-platform) bir prorgamlama dili diyebiliriz. İlk başta bir deney olarak çıkmıştır. Bu dilin oluşumu günümüzde fazlasıyla kullanılan diğer dillerin eksik ya da kullanışsız yönlerini tespit edip bu yönleri engellenmesi, aynı zamanda günümüzde popüler dillerin tercih edilme sebeplerini tespit ederek güzel, işe yarayan özelliklerinin harmanlanmasıyla gerçekleştirilmiştir. Topluluklarda c ile pythonun karışımı olduğu da söylenmektedir. Java, C++ gibi statik, güçlü olmakla beraber okunabilirliği de python gibidir. Keyword dediğimiz anahtar kelimeler go dilinde 25 adettir. Diğer dillerle karşılaştırmak gerekirse C dilinde 32, C++ dilinde 30(?), pythonda da 33 tane keyword bulunmaktadır. Ağ(network) ve çoklu işlem(multi processing) işlemleri desteklemektedir. Ek olarak belirtmek isterim ki röportajlar sırasında böyle bir dil yapmalarının sebebinin C++'ın karmaşık olduğunu belirtmişlerdir.

Resmi tam boyutlu olarak görmek için tıklayın.

Go(Lang) Kurulumu

Go dilinin kurulumu çok basittir. Fazla bir gereksinim istememektedir. Cihaza kurulması gerekenler git ve go'dur. Eğer git ve go kurulmassa cihazlarda go ile yazılmış programlar çalıştırılamaz. Kodlama ortamı için herhangi bir text editör tercih edilebilir. Ben Visual Studio Code kullanıyorum.

GoLang Kurulum Kaynak 1 [EN]
GoLang Kurulum Kaynak 2 [TR]
Visual Studio Code İndir

İlk Programımızı Yazalım

Gerekli kurulumlar da yapıldığında göre artık go yazmaya başlayabiliriz. Biz de herzaman ki geleneğe uyarak tabiki Dünya'ya merhaba diyeceğiz. İlk başta kullanacağımız text editörünü açalım. Yeni bir dosya oluşturalım, adlandırıp uzantısını go yapalım. Aşağıdaki kodu girelim ve programı kaydedelim.

Kod:
package main

import "fmt"

func main() {

fmt.Println("Selamlar GoLang Dünyası ")

}
Kodları şimdilik pek anlamamanız normal fakat ilk programımız hazır diyebiliriz. Çalıştırmamız için cmd ya da kullandığınız komut istemcisi üzerinde programın bulunduğu dizine gittikten sonra aşağıdaki komutu yazmamız yeterli olacaktır;

Resmi tam boyutlu olarak görmek için tıklayın.


Alıntı:
go run dosyaadi.go
Peki her yazdığımız programı böyle mi çalıştıracağız? Tabiki de hayır! Uzantısına da bakarsanız göreceksiniz ki bu bir go dosyası. Eğer bunu çalıştırılabilir yani executable hale getirmek istersek aşağıdaki komutu yazmamız gerekir;

Alıntı:
go build dosyaadi.go
Yazmış olduğumuz programın bulunduğu dizine gittiğimizde aşağıdaki gibi bir görüntü ile karşılaşacaksınızdır. Yani sadece bir go dosyası var ve çalıştırabilmemiz için komut istemcisinden bulunduğa dizine gidip yukarıda bahsettiğim komutu kullanmamız gerekir(go run ....).

Resmi tam boyutlu olarak görmek için tıklayın.

Ancak komut istemcisi üzerinden programın bulunduğu dizine gidip programı çalıştırılabilir hale getirdiğimiz komutu(go build....) girdikten sonra programın olduğu dizinde yazmış olduğumuz programın ".exe" formatında executable(çalıştırılabilir) olduğunu göreceksiniz. Hadi şimdi go dilinin derinliklerine inelim...

Resmi tam boyutlu olarak görmek için tıklayın.

"fmt" Paketi

Yazmış olduğumuz ilk kodda da görebileceğiniz üzere "fmt" isimli bir kütüphane kullandık. Bu kütüphane belki de go ile yazacağınız programların çoğunda geçecektir. Çünkü içerisinde I/O dediğimiz input/output yani girdi ve çıktı işlemleri gerçekleştirebileceğimiz fonksiyonları barındırır. Buradaki fonksiyonlar C dilindekilere benzemektedir ancak biraz daha basitleştirilmiş halleri diyebiliriz. Go dilinde bir paketin belirli bir özelliği kullanılmak istendiği zaman genellikle "paketismi.fonksiyon" şeklinde yazılmaktadır. "fmt" paketinde bulunan bir fonksiyonu da yine aynı şekilde kullanırız. Örnek olarak aşağıdaki fotoğrafa baktığımızda fmt paketinde bulunan birkaç fonksiyonu ve özeliklerini görebilirsiniz. Bu paketin detaylarını buraya tıklayarak öğrenebilirsiniz.

Resmi tam boyutlu olarak görmek için tıklayın.

Kod:
package main

import "fmt"

func main() {

var a string // Bu satırda a isimli bir string değişken belirlendi
fmt.Println("1. Bu println fonksiyonu") // 2.'yi yazdırdı ve alt satıra geçti
fmt.Print("2. Bu da print fonksiyonu\n") // Eğer '\n' olmasaydı 2. ve 3. bitişik, yanyana olurdu.
fmt.Printf("3. %T", a) // 'a' değişkeninin türünü yazdırdı. "%T" kullanıldığı için. (Type)

}
Değişkenler

Go dilinde birkaç yöntemle değişkenler tanımlanabilir. Aşağıda bulunan resimde go dilinde değişken tanımlamalarının nasıl yapıldığı gösterilmiştir.
Ancak önemli bir nokta ise bu kullanımlar değişkeni "ilk" defa tanımlarken kullanılmaktadır. Değeri değiştirilecekse eğer "=" yeterlidir.

Resmi tam boyutlu olarak görmek için tıklayın.

Kod:
package main

import "fmt"

func main() {

var degiskenadi = "Burası da değişkenin içeriği" // String yani yazı formatında değişken tanımladık
var degisken1, degisken2 = 50, 100 // İkisi de integer(int)(tam sayı) formatında 2 değişken tanımladık
var turkhackteam = true //Boolean (True ya da False) olabilecek bir değişken tanımladık
tht := "bu da bir değişken"

fmt.Println(degiskenadi)
fmt.Println(degisken1)
fmt.Println(degisken2)
fmt.Println(turkhackteam)
fmt.Println(tht)
}
For Döngüsü

Go dilinde "while" döngüsü bulunmamaktadır. Yapılan işlemler herzaman for ile gerçekleştirilmektedir. Aşağıdan çok temel bir for döngüsü kullanımını görebilirsiniz.

Resmi tam boyutlu olarak görmek için tıklayın.

Kod:
package main

import "fmt"

func main() {

for i := 0; i < 10; i++ {

fmt.Println("Burası for döngüsü devam ettikçe gerçekleşir.")
}

}
Başka bir örnek;

Resmi tam boyutlu olarak görmek için tıklayın.

Kod:
package main

import "fmt"

func main() {

for i := 0; i < 10; i++ {
fmt.Println(i)
}

}

If/Else

Go dilinde herhangi bir "else" durumu olmadan da "if" kullanabilirsiniz. Hemen hemen diğer dillerdeki kullanımları benzemektedir.

1. Hangi durumun gerçekleşeceğini programın çıktısı belirler.
2. Birden çok durum için birçok opsiyon olur
3. If bloğu içerisinde herhangi bir durum uygulanmassa, (oluşturulduysa) "else" bloğu çalıştırılır.


Resmi tam boyutlu olarak görmek için tıklayın.

Kod:
package main

import "fmt"

func main() {

var a string = "1234"

if a == "4321" {
fmt.Println("a 4321'dir")
} else if a == "0123" {
fmt.Println("a 0123'tür.")
} else {
fmt.Println("a'nın değeri başkadır.")
}

}

Switch/Case

Switch case durumlarının kullanımları da if/else'e benzemektedir. Genellikle bir durumun birden çok olasılığı varsa kullanılır.

1. Hangi durumun gerçekleşeceğini kişi belirler.
2. Bir durum için birçok olasılık olur
3. Oluşturulan durumlardan hiçbiri tutmuyorsa eğer oluşturulmuşsa "default" yani varsayılan durum gerçekleştirilir.



Resmi tam boyutlu olarak görmek için tıklayın.

Kod:
package main

import "fmt"

func main() {

num := 2002

switch num {
case 2015:
fmt.Println("Turkhackteam 2015 yılında kuruldu.")
case 2020:
fmt.Println("Turkhackteam 2020 yılında kuruldu.")
case 2002:
fmt.Println("Turkhackteam 2002 yılında kuruldu.")
}
}
Diziler

İngilizcede arrays olarak geçmektedirler. Toplu işlemlerde ciddi kolaylık sağlarlar.

Resmi tam boyutlu olarak görmek için tıklayın.

Kod:
package main

import "fmt"

func main() {

var dizi1 [10]int // İçerisinde 10 tane tam sayı bulunduran bir dizi oluşturduk
dizi1[0] = 1 // Dizide 1. sayının 1 olduğunu belirttik
dizi1[9] = 10 // Dizide 10. sayının 10 olduğunu belirttik
dizi1[1] = 3500 // Dizide 2. sayının 3500 olduğunu belirttik

fmt.Println(dizi1) //Diziyi yazdırdık

//1. 2. ve 10. elemanlar dışında diğer elemanlara değer girmediğimiz için 0 yazdırdı
}
Fonksiyonlar

Fonksiyonların kullanımı diğer dillerideki gibidir. Kodların okunabilirliğini ve işlevlerini arttırmaktadırlar.

Resmi tam boyutlu olarak görmek için tıklayın.

Kod:
package main

import "fmt"

func toplama(sayi1 int, sayi2 int) int {
return sayi1 + sayi2
}

func cikti(metin string) string {

fmt.Println(metin)

return metin
}

func main() {

fmt.Println(toplama(5, 10))
cikti("TurkHackTeam //aqua")

}
İşaretçiler

Pointer olarak geçmektedirler. Herhangi bir değişkenin ya da veri yapısının RAM'de nerede olduğunu belirten veri tipidir. Aşağıda bulunan örnekte
pointer kullanarak golang'te nasıl kullanıcıdan input alındığını görebilirsiniz.

Resmi tam boyutlu olarak görmek için tıklayın.

Kod:
package main

import "fmt"

func main() {
var username string

fmt.Print("Lütfen THT kullanıcı adınızı giriniz: ")

fmt.Scanln(&username)

fmt.Println("Hoşgeldiniz,", username)
}
GoLang ile Veritabanı İşlemleri

Veritabanları, bir grup verileri bir arada ve düzenli şekilde tutan yapılardır. Sunucularda, websitelerde günümüzde çoğu yerde bulunmaktadırlar. Go dilinde bulunan mongodb, sql gibi kütüphaneler aracılığıyla da bu veritabanları üzerinde işlem yapabiliriz. Ben sizlere uygulamalı gösterirken sqlite veritabanını kullanacağım. Go dilinde herhangi bir kütüphaneyi yüklemek için komut istemcisini açıp "go get ... " yazmamız yeterli olacaktır.

Öncelikle sqlite veritabanı kütüphanelerini komut istemcisi üzerinden indiriyoruz. (go get github.com/mattn/go-sqlite3) Herhangi bir hata ile karşılaşırsanız github üzerinden indirip go dosyalarının içerisine de atabilirsiniz. Ya da başka bir çözüm için buraya tıklayın.

Kullanacağımız kütüphaneyi kurduktan sonra şimdi de sqlite veritabanı oluşturmamız için kullanacağımız db browser'ı yüklememiz gerekmekte. Bu linkte tıklayarak cihazımıza uygun sürümü indiriyoruz. Ardından klasik kurulum gerçekleştiriyoruz.

Resmi tam boyutlu olarak görmek için tıklayın.

Kurulum işlemleri tamamlandığına göre sıra veritabanı üzerinde işlem yapmakta. İlk olarak projemizin bulunduğu dizine bir veritabanı klasörü oluşturalım.

Resmi tam boyutlu olarak görmek için tıklayın.

Programımızı çalıştırdıktan sonra "Yeni Veritabanı" butona basalım. Ardından açtığımız klasörün içerisine bir veritabanı dosyası oluşturalım.

Resmi tam boyutlu olarak görmek için tıklayın.

Ardından "users" isimli bir tablo oluşturalım ve içerisine tam sayı formatında id değişkeni ve string formatında user değişkeni atayalım.

Resmi tam boyutlu olarak görmek için tıklayın.

Veritabanımız hazır. Artık golang ile bu veritabanı üzerinde işlem yapabiliriz. Öncelikle işlem yapabilmek adına veritabanı ile bir bağlantı oluşturmamız gerekir. Aşağıdaki komut ile veritabanına düzgün bağlantı kurulup kurulamadığını görebiliriz.

Kod:
package main

import (
"database/sql"
)

func main() {
veritabanı, _ := sql.Open("sqlite3", "db/database1.db")

db, _ := veritabanı.Query("Select ' from users")

db.Close()
veritabanı.Close()
Veritabanı üzerinde bağlantı kurduktan sonra users tablosu içerisinde bir user verisi girmek için aşağıdaki kodu yazıyoruz.

Kod:
package main

import (
"database/sql"
"fmt"

)

func main() {
// veritabanıyla bağlantı kuruyoruz
veritabani, _ := sql.Open("sqlite3", "db/database1.db")

//veritabanına yeni veriyi nereye ekleyeceğimizi belirtiyoruz
conn, _ := veritabani.Prepare("insert into users (name) values (?)")

// veritabanına yeni isim ekliyoruz
veriekle, _ := conn.Exec("TurkHackTeam Aqua")

// Son eklenen user verisinin id numarasını alıyoruz
idd, _ := veriekle.LastInsertId()

// aldığımız id'yi yazdırıyoruz
fmt.Println(idd)

//Veritabanı bağlantısını kapatıyoruz.
veritabani.Close()
}
Yukarıda temel örnekler gibi golang ile de veritabanı işlemleri gerçekleştirebiliriz.

GoLang Dosya İşlemleri

Öncelikle en temelden dosya oluşturmak ile başlayalım. Aşağıda bulunan kodu yazıp programı çalıştırdığımızda programın olduğu dizinde vermiş olduğumuz ad ile bir dosya kaydedecektir.

Resmi tam boyutlu olarak görmek için tıklayın.

Programı çalıştırdıktan sonra bulunduğu dizine gidip baktığımızda istediğimiz dosyayı oluşturduğunu görebiliyoruz.

Resmi tam boyutlu olarak görmek için tıklayın.

Şimdi oluşturduğumuz dosya hakkında biraz bilgi edinelim. Yazacağımız komut ile adını, boyutunu, izinlerini, en son güncellendiği tarihi görebileceğiz.

Kod:
package main

import (
"fmt"
"os"
)

var fileinfo *os.FileInfo

func main() {

fileinfo, _ := os.Stat("bubirdosyadir.txt")

fmt.Println(fileinfo.Name())
fmt.Println(fileinfo.Mode())
fmt.Println(fileinfo.Size())
fmt.Println(fileinfo.ModTime())
}
Ancak dosyanın içi boş ve hiçbir şey yazmadık. İçerisine bir yazı yazalım.

Resmi tam boyutlu olarak görmek için tıklayın.

Bir yazı yazdıktan sonra programı çalıştırdığımızda program hakkında bilgileri elde ediyoruz.

Resmi tam boyutlu olarak görmek için tıklayın.

Gördüğünüz gibi golang ile dosya işlemleri de yapılabilmekte. Vermiş olduğum örnekler çok basit ve yüzeysel gelmiş olabilir ancak kendiniz de çaba harcamadan maalesef kendinize bir şey katmanız zor.


Okuduğunuz için teşekkür ederim. Saygılar.

Cevapla Yeni Konu Aç


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


İçerik sağlayıcı paylaşım sitesi olarak hizmet veren macawforum.com adresimizde 5651 Sayılı Kanunun 8. Maddesine ve T.C.K nın 125. Maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur.

Şu Anki Saat: 01:59:21

 
Copyright © 2020

izmir escort