# ✏️ Go Syntax

Her programlama dilinde olduğu gibi Go da kendine has kod yazım kurallarına sahiptir. Kod yazmaya başlamadan önce bu kuralları öğrenmeniz gerektiğinden bu derste **Go Sytnax** konusunu işliyoruz.

## 1. Zorunlu Paket Ekleme

Go programlama dilinde her program mutlaka `package main` ile başlamalıdır. Go, paketleri başka bir Go programında kullanmamıza izin veriyor ve bu nedenle kodun yeniden kullanılabilirliğini destekliyor. Bir Go programının çalıştırılması main adlı paketin içindeki kodla başlar. Örneğin:

```go
package main

import "fmt"
func main() {
    fmt.Println("Merhaba Dünya!")
}
```

## 2. Kütüphaneler

Go üzerinde bir kütüphane ekleme isterseniz bunu `import` ile yapabilirsiniz.

```go
import "fmt"
import "math/rand"
```

Birden fazla kütüphane ekleyecekseniz aşağıdaki gibi bir kullanım daha kolay olabilir.

```go
import (
    "fmt"
    "math/rand"
)
```

## 3. Süslü Parantezler

Go programlama dili herkes için aynı kullanım tarzını benimsetir. Eğer bir fonksiyon ve döngü için süslü parantez kullanacaksanız bunu yapmanın tek bir yolu vardır. Bu doğru ve yanlış kullanımı aşağıda görebilirsiniz.

{% tabs %}
{% tab title="Doğru Kullanım" %}

```go
func add(x int, y int) int {
return x + y
}
```

{% endtab %}

{% tab title="Yanlış Kullanım" %}

```go
func add(x int, y int) int
{
return x + y
}
```

{% endtab %}
{% endtabs %}

## 4. Ana Fonksiyon

Go dilinde yazdığınız programlarınızı yürütmek istiyorsanız mutlaka `main()` fonksiyonunu kullanmalısınız. Program sadece `main()` içinde yazılan işlevleri çalıştıracaktır.

```go
package main
import "fmt"

func main() {
    fmt.Println("Merhaba Dünya!")
}
```

## 5. Ekrana Veri Yazdırma

Go programlama dilinde giriş çıkış işlemleri (I/O) için `fmt` kütüphanesini kullanırız. Eğer çıktılarınızı ekrana basmak veya kullanıcılardan veri almak istiyorsanız bunun `fmt` kütüphanesi ile nasıl olduğunu görelim.

`fmt.Print()` programı içine aldığı değer ve değişkenleri ekrana yazdırır.&#x20;

{% tabs %}
{% tab title="Go" %}

```go
package main
import "fmt"

func main() {
    //Ekrana tek satırda yazı yazar
    fmt.Print("Merhaba ")
    fmt.Print("Dünya!")
}
```

{% endtab %}

{% tab title="Ekran Çıktısı" %}

```
Merhaba Dünya!
```

{% endtab %}
{% endtabs %}

`fmt.Println()` fonksiyonu ise bu değerleri satır satır yazdırır.

{% tabs %}
{% tab title="Go" %}

```go
package main
import "fmt"

func main() {
    //Ekrana satır satır yazı yazar
    fmt.Println("Merhaba")
    fmt.Println("Dünya!")
}
```

{% endtab %}

{% tab title="Ekran Çıktısı" %}

```
Merhaba
Dünya!
```

{% endtab %}
{% endtabs %}

Birden fazla veriyi tek bir fonksiyonla yazdırmak için `,` ile ayırmanız gerekiyor. `fmt.Print()` tüm değerleri boşluksuz olarak yan yana yazdırırken `fmt.Println()` veriler arasına boşluk koyar.

{% tabs %}
{% tab title="Go" %}

```go
package main
import "fmt"

func main() {        
    fmt.Print("Merhaba","Dünya!")
    fmt.Println("Merhaba","Dünya!")
}
```

{% endtab %}

{% tab title="Ekran Çıktısı" %}

```
MerhabaDünya!
Merhaba Dünya!
```

{% endtab %}
{% endtabs %}

## 6. Kullanıcıdan Veri Alma

Go ile kullanıcılardan girdi alabilmek için fmt kütüphanesinin `Scan()` ve `Scanln()` fonksiyonlarını kullanabiliriz.

{% tabs %}
{% tab title="Go" %}

```go
package main
import "fmt"

func main() {        
    fmt.Print("Adınız: ")    
    
    var ad string
    fmt.Scanln(&ad)
    
    fmt.Println("Merhaba",ad)
}
```

{% endtab %}

{% tab title="Ekran Çıktısı" %}

```
Adınız: İsmet
Merhaba İsmet
```

{% endtab %}
{% endtabs %}
