Professional Documents
Culture Documents
Golang Programlama Dili
Golang Programlama Dili
Golang Programlama Dili
Amaç
Golang için Türkçe kaynak oluşturmak
Golang için ücretsiz eğitim kaynağı oluşturmak
Golang dilinin temel yapısını öğretmek
Dilin özellikleri;
Buradan İndirebilirsiniz
https://golang.org/dl/
Buradan İndirebilirsiniz
https://code.visualstudio.com/Download
package
package uygulama
uygulama
import
import "fmt"
"fmt"
func
func main()
main() {{
fmt.Println("Merhaba
fmt.Println("Merhaba Dünya")
Dünya")
}}
import “fmt” ile Golang dilinde kullanılan ana işlemler için olan
kütüphanemizi içeri aktardık.
import "fmt"
func main() {
fmt.Println("Merhaba Dünya") // Çıktımız
}
/* */ Taksim-Yıldız Yöntemi
Bu yöntem ile birden fazla satırın derlemede görmezden
gelinmesini sağlayabiliriz.
Veri Tipleri
Her programlama dilinde olduğu gibi Golang’ta da veri tipleri
mevcuttur. Veri tipleri verilerimizi RAM’de saklayabilmemiz için
belirttiğimiz şekilde alan ayırmamızı sağlar. Veri tiplerini
inceleyecek olursak;
Integer Türler
Float Türler
Complex Türler
var
var isim
isim string
string == “Ali”
“Ali”
var
var yas
yas int
int =
= 20
20
var
var ogrenci
ogrenci boolean =
boolean = true
true
var
var isim
isim == “Ali”
“Ali”
var
var yas
yas == 20
20
var
var ogrenci
ogrenci = = true
true
tür(değer)
import
import "fmt"
"fmt"
func
func topla(a
topla(a int,
int, bb int)
int) int
int {{
return
return aa ++ bb //a
//a ve
ve b’nin
b’nin toplamını
toplamını döndürür.
döndürür.
}}
func
func main()
main() {{
fmt.Println(topla(2,
fmt.Println(topla(2, 5))
5)) //2+5
//2+5 sonucunu
sonucunu ekrana
ekrana bastır
bastır
}}
import
import "fmt"
"fmt"
func
func yazdir()
yazdir() {{
fmt.Println(“yazı
fmt.Println(“yazı yazdırdık”)
yazdırdık”)
}}
func
func main()
main() {{
yazdir()
yazdir()
}}
import
import "fmt"
"fmt"
func
func takas(a,
takas(a, b
b string)
string) (string,
(string, string)
string) {
{
return
return b,
b, a
a
}
}
func
func main()
main() {
{
fmt.Println(takas(“Türkiye”,
fmt.Println(takas(“Türkiye”, “Cumhuriyeti”))
“Cumhuriyeti”))
}
}
import
import "fmt"
"fmt"
func
func islem(sayi
islem(sayi int)
int) (x,
(x, yy int)
int) {{ //return’un
//return’un degiskenlerini
degiskenlerini
tanımladık
tanımladık
xx == sayi
sayi // 22
yy == sayi
sayi ** 22
return
return //Burada
//Burada sadece
sadece return
return yazıyor
yazıyor
}}
func
func main()
main() {{
fmt.Println(islem(10))
fmt.Println(islem(10))
}}
Açıklaması:
Döngü değişkenimiz olan i'ye 0 sayısal değerini verdik. i<10
yazmamızın sebebi alt bloktaki kodun sadece i değeri 10 sayısal
değerinden küçük olduğu zaman çalışmasını sağladık. i++ ile ise
döngü her başa sardığında i'ye +1 sayı eklemesini sağladık. for
kod bloğunun içinde ise her işlemde konsola i'nin değerinin
bastırılmasını sağladık.
Konsol çıktımız şu şekilde olacaktır;
0
1
2
3
4
5
6
6
7
7
8
8
9
9
Açıklaması:
For döngüsünden ayrı olarak deger adında 0 sayısal değerini
alan bir değişen oluşturduk. For döngüsünde ise sadece koşul
parametresini belirttlik. Yani döngü deger değişkeni 10 sayısından
küçük olduğu zaman çalışacak. For kod bloğu içerisinde her döngü
tekrarlandığında deger değişkeni ekrana basılacak ve deger
değişkenine +1 eklenecek.
Konsol çıktımız şu şekilde olacaktır;
00
11
22
33
44
55
66
77
88
99
IF-ELSE AKIŞI
if
if koşul
koşul {
{
Koşul
Koşul sağlandığında
sağlandığında yapılacak
yapılacak işlemler
işlemler
}else{
}else{
Koşul
Koşul sağlanmadığında
sağlanmadığında yapılacak
yapılacak işlemler
işlemler
}
}
import
import "fmt"
"fmt"
func main()
main() {
i :=
:= 55
if i ==
== 55 {
fmt.Println("i'nin
fmt.Println("i'nin değeri 5'tir.")
} else
else {
fmt.Println("i'nin
fmt.Println("i'nin değeri 5 değildir.")
}
}
i:=10
if i==10 {
fmt.Println(“i’nin
fmt.Println(“i’nin değeri 10’dur.”)
}
ELSE-IF KULLANIMI
ii :=
:= 55
if
if ii ==
== 55 {{
fmt.Println("i'nin
fmt.Println("i'nin değeri
değeri 5'tir.")
5'tir.")
}} else
else ifif i==3{
i==3{
fmt.Println("i'nin
fmt.Println("i'nin değeri
değeri 3'tür.")
3'tür.")
}else{
}else{
fmt.Println("i'nin
fmt.Println("i'nin değeri
değeri belirsiz.")
belirsiz.")
}}
import "fmt"
func main() {
i := 5
a := 3
b := 5
if i != a { //Birinci Koşul
fmt.Println("i eşit değildir a")
}
if i == b { //İkinci Koşul
fmt.Println("i eşittir b")
}
import
import "fmt"
"fmt"
func
func main()
main() {
{
i
i :=
:= 5
5
switch
switch ii {
{
case
case 5:
5:
fmt.Println("i
fmt.Println("i eşittir
eşittir 5")
5")
case
case 10:
10:
fmt.Println("i
fmt.Println("i eşittir
eşittir 10")
10")
case
case 15:
15:
fmt.Println("i
fmt.Println("i eşittir
eşittir 15")
15")
}
}
}
}
switch
switch ii {{
case
case 5:
5:
fmt.Println("i
fmt.Println("i eşittir
eşittir 5")
5")
default:
default:
fmt.Println("i
fmt.Println("i bilinmiyor")
bilinmiyor")
}}
Koşulsuz Switch
package
package main
main
import
import "fmt"
"fmt"
func
func main()
main() {
{
i
i :=
:= 5
5
switch
switch {{
case
case i == 5:
i == 5: //i=5
//i=5 olduğu
olduğu için
için diğer
diğer case’ler
case’ler sorgulanmaz
sorgulanmaz
fmt.Println("i
fmt.Println("i eşittir 5")
eşittir 5")
case
case ii <
< 10:
10:
fmt.Println("i
fmt.Println("i küçüktür
küçüktür 10")
10")
case
case ii >
> 3:
3:
fmt.Println("i
fmt.Println("i büyüktür
büyüktür 3")
3")
}
}
}
}
ii eşittir
eşittir 5
DEFER
import
import "fmt"
"fmt"
func
func main()
main() {
{
defer
defer fmt.Println("İlk Cümle")
fmt.Println("İkinci
fmt.Println("İkinci Cümle")
Cümle")
}
}
package main
main
import
import "fmt"
"fmt"
func main()
main() {
defer fmt.Println("ilk Cümle")
defer fmt.Println("İkinci Cümle")
defer fmt.Println("Üçüncü Cümle")
defer fmt.Println("Dördüncü Cümle")
fmt.Println("Beşinci Cümle")
}
Çıktımız şu şekilde olacaktır;
Beşinci
Beşinci Cümle
Cümle
Dördüncü
Dördüncü Cümle
Cümle
Üçüncü
Üçüncü Cümle
Cümle
İkinci
İkinci Cümle
Cümle
ilk
ilk Cümle
Cümle
package main
main
import
import "fmt"
"fmt"
func main()
main() {
fmt.Println("Sayıyor")
for
for i := 0; i <
< 10; i++ {
defer fmt.Println(i)
}
fmt.Println("Bitti")
}
import
import "fmt"
"fmt"
type
type insan
insan struct
struct {
{
isim
isim string
string
yas int
yas int
kilo
kilo int
int
}
}
func
func main()
main() {{
ali
ali :=
:= insan{}
insan{}
ali.isim
ali.isim = = "Ali"
"Ali"
ali.yas
ali.yas == 20
20
ali.kilo
ali.kilo = = 70
70
fmt.Println(ali.isim,
fmt.Println(ali.isim, ali.yas,
ali.yas, ali.kilo)
ali.kilo)
}
}
import
import "fmt"
"fmt"
type
type tamsayi
tamsayi int
int
func
func main()
main() {
{
var
var sayi
sayi tamsayi
tamsayi =
= 12
12
fmt.Println(sayi)
fmt.Println(sayi)
}
}
package
package main
main
import
import "fmt"
"fmt"
func
func main()
main() {{
i
i :=
:= 40
40
p
p :=
:= &i
&i
fmt.Println(p)
fmt.Println(p) //Alacağımız
//Alacağımız benzeri
benzeri çıktı:
çıktı: 0xc000012120
0xc000012120
fmt.Println(*p)
fmt.Println(*p) //Alacağımız
//Alacağımız çıktı:
çıktı: 40
40
*p = 35
*p = 35 //Dolaylı olarak i nin değerini değiştirdik
fmt.Println(i)
fmt.Println(i) //Alacağımız
//Alacağımız çıktı:
çıktı: 35
}
}
import
import "fmt"
"fmt"
func
func main()
main() {{
var
var aa [3]string
[3]string
a[0]
a[0] == "Ayşe"
"Ayşe" //Birinci değer
a[1]
a[1] == "Fatma"
"Fatma" //İkinci değer
a[2]
a[2] == "Hayriye"
"Hayriye" //Üçüncü değer
fmt.Println(a)
fmt.Println(a) //Çıktımız: [Ayşe Fatma Hayriye]
fmt.Println(a[1])//Çıktımız:
fmt.Println(a[1])//Çıktımız: Fatma
}
}
import
import "fmt"
"fmt"
func main()
main() {
a :=
:= [3]string{"Ayşe",
[3]string{"Ayşe", "Fatma", "Hayriye"}
fmt.Println(a) //Çıktımız: [Ayşe Fatma Hayriye]
}
DİLİMLER (Slices)
import
import "fmt"
"fmt"
func
func main()
main() {{
a
a :=
:= [6]int{2,
[6]int{2, 3,
3, 5,
5, 6,
6, 7,
7, 9}
9}
fmt.Println(a)
fmt.Println(a) //Çıktımız:
//Çıktımız: [2
[2 3
3 55 6
6 7
7 9]
9]
var
var bb []int
[]int =
= a[2:4]
a[2:4] //Dilimleme
//Dilimleme işlemi
işlemi
fmt.Println(b)
fmt.Println(b) //Çıktımız:
//Çıktımız: [5
[5 6]
6]
}
}
import
import "fmt"
"fmt"
func main()
main() {
a :=
:= [6]int{2,
[6]int{2, 3, 5, 6, 7, 9}
var
var b []int = a[:4]
a[:4] //Boş
//Boş bırakılan
bırakılan indeks
indeks 0 varsayıldı
fmt.Println(b) //Çıktımız:
//Çıktımız: [2 3 55 6]
[2 3 6]
var
var c []int = a[3:] //Boş bırakıldığı için
a[3:] //Boş bırakıldığı için 3. index ve
sonrası alındı
alındı
fmt.Println(c) //Çıktımız:
//Çıktımız: [6
[6 77 9]
9]
}
Dilim Uzunluğu ve Kapasitesi
import
import "fmt"
"fmt"
func
func main()
main() {
{
a
a :=
:= [6]int{2,
[6]int{2, 3,
3, 5,
5, 6,
6, 7,
7, 9}
9}
b
b :=
:= a[2:4]
a[2:4]
fmt.Println("a
fmt.Println("a uzunluk",
uzunluk", len(a))
len(a))
fmt.Println("a
fmt.Println("a kapasite",
kapasite", cap(a))
cap(a))
fmt.Println("a'nın
fmt.Println("a'nın içeriği", a)
içeriği", a)
fmt.Println("b uzunluk", len(b))
fmt.Println("b uzunluk", len(b))
fmt.Println("b
fmt.Println("b kapasite",
kapasite", cap(b))
cap(b))
fmt.Println("b'nin
fmt.Println("b'nin içeriği",
içeriği", b)
b)
}
}
b dizisi ile a dizisini dilimlediğimiz için b dizisinin kapasitesi ve
uzunluğu değişti. Uzunluk dizinin içindeki değerlerin sayısıdır.
Kapasite ise dizinin maksimum alabileceği değer sayısıdır.
package
package main
main
import
import "fmt"
"fmt"
func
func main()
main() {
{
var
var a
a []int
[]int
if
if a
a ==
== nil
nil {
{
fmt.Println("Boş")
fmt.Println("Boş")
}
}
}
}
a
a :=
:= make([]int,
make([]int, 5)
5)
package
package main
main
import
import "fmt"
"fmt"
func
func main()
main() {
{
var
var a
a []string
[]string
fmt.Println(a)
fmt.Println(a) //[
//[ ]
a
a =
= append(a,
append(a, "Ali")
"Ali")
a = append(a, "Veli")
a = append(a, "Veli")
fmt.Println(a)
fmt.Println(a) //[Ali
//[Ali Veli]
}
}
fmt.Println(len(a), cap(a))
package
package main
main
import
import "fmt"
"fmt"
var
var isimler
isimler =
= []string{"Ali",
[]string{"Ali", "Veli",
"Veli", "Hasan",
"Hasan", "Ahmet",
"Ahmet",
"Mehmet"}
"Mehmet"}
func
func main()
main() {{
for
for a, b :=
a, b := range
range isimler
isimler {
{
fmt.Printf("%d.
fmt.Printf("%d. indeks =
indeks = %s\n",
%s\n", a,
a, b)
b)
}
}
}
}
package
package main
main
import
import "fmt"
"fmt"
type
type insan
insan struct
struct {
{
kisi1,
kisi1, kisi2,
kisi2, kisi3
kisi3 string
string
}
}
func
func main()
main() {{
var m map[string]insan
var m map[string]insan
m
m =
= make(map[string]insan)
make(map[string]insan)
m["isim"]
m["isim"] == insan{
insan{
"Ali",
"Ali", "Veli",
"Veli", "Ahmet",
"Ahmet",
}
}
fmt.Println(m["isim"])
fmt.Println(m["isim"])
}
}
{Ali
{Ali Veli
Veli Ahmet}
Ahmet}
Birden Fazla Bölge Ekleme
import
import "fmt"
"fmt"
type
type insan
insan struct
struct {
{
kisi1,
kisi1, kisi2,
kisi2, kisi3
kisi3 string
string
}
}
var
var m
m =
= map[string]insan{
map[string]insan{
"erkekler":
"erkekler": insan{"Ali",
insan{"Ali", "Veli",
"Veli", "Ahmet"},
"Ahmet"},
"kadinlar":
"kadinlar": insan{"Ayşe",
insan{"Ayşe", "Fatma",
"Fatma", "Hayriye"},
"Hayriye"},
}
}
func
func main()
main() {
{
fmt.Println(m["erkekler"])
fmt.Println(m["erkekler"])
fmt.Println(m["kadinlar"])
fmt.Println(m["kadinlar"])
fmt.Println(m)
fmt.Println(m)
}
}
package main
main
import
import "fmt"
"fmt"
func main()
main() {
m :=
:= make(map[string]int)
make(map[string]int) //m
//m isminde string
string bölge isimli
int
int değer
değer taşıyan dizi
m["sayi"]
m["sayi"] = 25 //sayi
//sayi bölgesine 25
25 değerini yerleştirdik
fmt.Println(m["sayi"]) //Çıktımız:
//Çıktımız: 25
25
delete(m,
delete(m, "sayi") //sayi
//sayi bölgesindeki değeri sildik
fmt.Println(m["sayi"]) //Çıktımız:
//Çıktımız: 00 (sıfır)
}
Arayüz
package main
main
import
import "fmt"
"fmt"
type iletisim
iletisim interface
interface {
topla() int
int
}
type sayilar
sayilar struct {
bir, iki
iki int
int
}
func main()
main() {
var
var a iletisim
v :=
:= sayilar{3,
sayilar{3, 4}
4}
a == &v
&v
fmt.Println(a.topla())
}
type sayi
sayi int
func (f
(f sayi)
sayi) topla()
topla() int {
return
return int(f)
}
func (sayi
(sayi *sayilar)
*sayilar) topla() int {
return
return sayi.bir
sayi.bir + sayi.iki
}
import
import (
"fmt"
"time"
"time"
)
func yaz(s
yaz(s string)
string) {
for
for i := 0; i << 5;
5; i++ {
time.Sleep(1000
time.Sleep(1000 * time.Millisecond)
fmt.Println(s)
}
}
func main()
main() {
go yaz("Dünya")
yaz("Dünya")
yaz("Merhaba")
}
import
import "fmt"
"fmt"
func topla(s
topla(s []int, c chan int) {
toplam
toplam :=
:= 0
for
for _,
_, v := range s {
toplam
toplam +=
+= v
}
c <-
<- toplam
toplam //toplam değerini c kanalına yolladık
}
func main()
main() {
s :=
:= []int{7,
[]int{7, 2,
2, 8,
8, -9, 4, 0}
c :=
:= make(chan
make(chan int)
go topla(s[:len(s)/2], c)
go topla(s[len(s)/2:], c)
x, y :=
:= <-c,
<-c, <-c //c
//c kanalından veri
veri aldık
aldık
fmt.Println(x, y, x+y)
}
GitHub: https://github.com/ksckaan/golangtrpdf
İletişim: kaanksc@hotmail.com
ksc10