# # Go Operatörler

Diğer tüm programlama dillerinde olduğu gibi Go programlama dilinde de operatörler değişkenler ve değerler üzerinde işlem gerçekleştirmek için kullanılırlar. Buradaki işlem birçok kategoriye sahiptir. Şimdi bu kategorileri yazalım ve ardından tek tek inceleyelim;&#x20;

* Aritmetik (arithmetic) operatörler
* Atama (assignment) operatörleri
* Karşılaştırma (comparison) operatörleri
* Mantıksal (logical) operatörler
* Bit (bitwise) operatörleri

## 1. Aritmetik Operatörler

Go aritmetik (arithmetic) operatörler sayılar üzerinde matematiksel işlemler yapılırken kullanılırlar. `a=5` ve `b=2` değişkenleri üzerinden aşağıdaki örnek kullanımları inceleyebilirsiniz.

| Operatör | Açıklama     | Örnek            |
| -------- | ------------ | ---------------- |
| +        | Toplama      | a + b     => 7   |
| -        | Çıkarma      | a - b      => 3  |
| \*       | Çarpma       | a \* b     => 10 |
| /        | Bölme        | a / b     => 2.5 |
| %        | Mod Alma     | a % b    => 1    |
| ++       | Bir Artırma  | a++       => 6   |
| --       | Bir Eksiltme | a--         => 4 |

{% hint style="info" %}
`++` ve `--` ifadeleri Go programlama dilinde sadece **statement** ile kullanılabilir. **Expression** olarak kullandığınızda hata alırsınız. İkisi arasındaki fark için [Tıklayınız.](https://medium.com/@burcus/expression-ve-statement-fark%C4%B1-293105692ccd)
{% endhint %}

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

```go
a++
fmt.Print(a)
```

{% endtab %}

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

```go
fmt.Print(a++)
```

{% endtab %}
{% endtabs %}

## 2. Atama Operatörleri

Go Atama operatörleri değerleri değişkenlere atarken kullanırlar. Tabi bu atamaları yaparken aynı zamanda aritmetik operatörleri de kullanarak pratik kod yazabilirsiniz. `a=5` ve `b=2` değişkenleri üzerinden aşağıdaki örnek kullanımları inceleyebilirsiniz.

| Operatör | Açıklama          | Eş Kullanım |
| -------- | ----------------- | ----------- |
| =        | Eşittir           | a = b       |
| +=       | Toplayarak Eşitle | a = a + b   |
| -=       | Çıkararak Eşitle  | a = a - b   |
| \*=      | Çarparak Eşitle   | a = a \* b  |
| /=       | Bölerek Eşitle    | a = a / b   |
| %=       | Mod Alarak Eşitle | a = a % b   |
| &=       | Bit AND İşlemi    | a = a & b   |
| \|=      | Bit OR İşlemi     | a = a \| b  |
| ^=       | Bit XOR İşlemi    | a = a + b   |

## 3. Karşılaştırma Operatörleri

Go karşılaştırma (comparison) operatörleri ile sayılar üzerinde büyük, küçük ve eşit ifadeleriyle karşılaştırma yapabilirsiniz. `a=5` ve `b=2` değişkenleri üzerinden aşağıdaki örnek kullanımları inceleyebilirsiniz.

| Operatör | Açıklama      | Eş Kullanım           |
| -------- | ------------- | --------------------- |
| ==       | Eşit mi       | a == b      // False  |
| !=       | Eşit değil mi | a != b       // True  |
| >        | Büyük mü      | a > b        // True  |
| <        | Küçük mü      | a < b        // False |
| >=       | Büyük eşit mi | a >= b      // True   |
| <=       | Küçük eşit mi | a <= b      // False  |

## 4. Mantıksal Operatörleri

Go mantıksal (logical) operatörler ile şartlı durumları birleştirebilirsiniz. `a=5` ve `b=2` değişkenleri üzerinden aşağıdaki örnek kullanımları inceleyebilirsiniz.

| Operatör | Açıklama                    | Eş Kullanım                            |
| -------- | --------------------------- | -------------------------------------- |
| &&       | Her iki durumda doğruysa    | a < 5 && b < 10             // True    |
| \|\|     | Herhangi bir durum doğruysa | x < 5 \|\| x == 10             // True |
| !        | Durumu ters çevir           | !(a < 5 && b < 10)        // False     |

## 5. Bit Operatörleri

Go bit (bitwise) operatörler ile değişkenleri karşılaştırarak `AND` , `OR` , `XOR` , `NOT` , `Sağa Kaydırma` ve `Sola Kaydırma` işlemlerini gerçekleştirebilirsiniz. Örnek kullanımları aşağıdan inceleyebilirsiniz.&#x20;

| Operatör | Açıklama      |
| -------- | ------------- |
| &        | AND işlemi    |
| \|       | OR işlemi     |
| ^        | XOR işlemi    |
| <<       | Sola kaydırma |
| >>       | Sağa kaydırma |

**&** operatörü ile elinizdeki bir sayıyı başka bir sayı ile bit düzeyinde **AND** işlemine tabi tutabilirsiniz. Örnek kullanım aşağıdadır:

```go
a := 3
// bit değeri: 0011

b := 5
// bit değeri: 0101

a &= b

//         0011
//(AND)    0101
//-------------
//         0001


fmt.Println(a)    // 1
```

**`|`** operatörü ile elinizdeki bir sayıyı başka bir sayı ile bit düzeyinde **OR** işlemine tabi tutabilirsiniz. Örnek kullanım aşağıdadır:

```go
a := 3
// bit değeri: 0011

b := 5
// bit değeri: 0101

a |= b

//         0011
//(OR)     0101
//-------------
//         0111


fmt.Println(a)    // 7
```

**`^`** operatörü ile elinizdeki bir sayıyı başka bir sayı ile bit düzeyinde **XOR** işlemine tabi tutabilirsiniz. Örnek kullanım aşağıdadır:

```go
a := 3
// bit değeri: 0011

b := 5
// bit değeri: 0101

a ^= b

//          0011
//(XOR)     0101
//--------------
//          0110


fmt.Println(a)    // 6
```

**`>>`** operatörü ile elinizdeki bir sayının bit değeri üzerinden sağa kaydırma işlemi yapabilirsiniz. Soldan gelen yeni bitle ise 0 değerini alır. Örnek kullanım aşağıdadır:

```go
a := 5
// bit değeri: 0101

a >>= 2
// yeni bit değeri: 0001

fmt.Println(a)    //1
```

**`<<`** operatörü ile elinizdeki bir sayının bit değeri üzerinden sola kaydırma işlemi yapabilirsiniz. Sağdan gelen yeni bitle ise 0 değerini alır. Örnek kullanım aşağıdadır:

```go
a := 13
// bit değeri: 1101

a <<= 5
// yeni bit değeri: 110100000

fmt.Println(a)    //416
```


---

# 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/temel-dersler/go-operatoerler.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.
