# ✏️ 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://derslik.kerteriz.net/go/go-syntax.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
