1 Golang Operatorlarının Genel Bakışı

Go dilinde, operatörler program kodu işlemlerini gerçekleştirmek için kullanılır; bu işlemler arasında aritmetik operasyonlar, ilişkisel karşılaştırmalar, mantıksal operasyonlar ve daha fazlası bulunmaktadır. Farklı operatörler farklı işlevselliklere ve kullanım senaryolarına karşılık gelir. Bu operatörleri anlamak ve ustalaşmak etkili programlamanın temelidir.

2 Aritmetik Operatörler

Go dilinde bir dizi aritmetik operatör bulunmaktadır:

  • Toplama (+): Toplama operasyonu
  • Çıkarma (-): Çıkarma operasyonu
  • Çarpma (*): Çarpma operasyonu
  • Bölme (/): Bölme operasyonu
  • Kalan (%): Mod işlemi

Örnekler:

package main

import "fmt"

func main() {
    // Toplama operasyonu
    toplam := 10 + 5
    fmt.Println("10 + 5 =", toplam) // Çıktı 15

    // Çıkarma operasyonu
    fark := 10 - 5
    fmt.Println("10 - 5 =", fark) // Çıktı 5

    // Çarpma operasyonu
    carpim := 10 * 5
    fmt.Println("10 * 5 =", carpim) // Çıktı 50

    // Bölme operasyonu
    bolum := 10 / 5
    fmt.Println("10 / 5 =", bolum) // Çıktı 2

    // Mod işlemi
    kalan := 10 % 5
    fmt.Println("10 % 5 =", kalan) // Çıktı 0
}

3 Mantıksal Operatörler

Go dilindeki mantıksal operatörler, birden fazla koşulu birleştirmek için kullanılır (genellikle boolean değerler için kullanılır). Bu operatörler AND (&&), OR (||) ve NOT (!) olmak üzere üç tür içerir.

3.1 AND (&&)

Tüm koşullar doğru olduğunda "AND" operasyonunun sonucu doğru olur.

Örnekler:

package main

import "fmt"

func main() {
    fmt.Println(true && true)   // Çıktı doğru
    fmt.Println(true && false)  // Çıktı yanlış
    fmt.Println(false && false) // Çıktı yanlış
    // Sonuç, her iki koşul da doğru olduğunda sadece doğrudur
}

3.2 OR (||)

En az bir koşul doğru olduğunda "OR" operasyonunun sonucu doğru olur.

Örnekler:

package main

import "fmt"

func main() {
    fmt.Println(true || true)   // Çıktı doğru
    fmt.Println(true || false)  // Çıktı doğru
    fmt.Println(false || false) // Çıktı yanlış
    // Bir koşulun en az biri doğru ise sonuç doğrudur
}

3.3 NOT (!)

Bir koşulun boolean değerini tersine çevirmek için kullanılır.

Örnekler:

package main

import "fmt"

func main() {
    fmt.Println(!true)  // Çıktı yanlış
    fmt.Println(!false) // Çıktı doğru
    // Boolean değeri tersine çevirir
}

4 Karşılaştırma Operatörleri

Go dilindeki karşılaştırma operatörleri, iki değişkeni veya değeri karşılaştırmak için kullanılır:

  • Eşit (=)
  • Eşit değil (!=)
  • Büyük (>)
  • Küçük (<)
  • Büyük veya eşit (>=)
  • Küçük veya eşit (<=)

Karşılaştırma operasyonlarının sonucu bir boolean değerdir: true veya false.

5 Bit Düzeyinde Operatörler

Go'da, bit düzeyinde operatörler verilerin ikili bitlerini doğrudan manipüle etmemize olanak tanır:

  • Bitwise AND (&)
  • Bitwise OR (|)
  • Bitwise XOR (^)
  • Bitwise sola kaydırma (<<)
  • Bitwise sağa kaydırma (>>)

Bit düzeyinde operatörler genellikle düşük seviyeli programlamada, doğrudan donanım operasyonlarında, şifreleme ve diğer senaryolarda kullanılır.

6 Atama Operatörleri

Atama operatörleri, değişkenlere değer atamak için kullanılır. Go dilinde atama operatörlerinin birden fazla formu bulunmaktadır:

  • Basit atama (=)
  • Toplama atama (+=)
  • Çıkarma atama (-=)
  • Çarpma atama (*=)
  • Bölme atama (/=)
  • Modül atama (%=)

Bu operatörler kodu daha kısa hale getirir. Örneğin, x += 1 ifadesi x = x + 1 ile eşdeğerdir.

7 Özel Operatörler

7.1 Artırma (++) ve Azaltma (--) Operatörleri

Artırma operatörü (++) ve azaltma operatörü (--), sırasıyla bir değişkenin değerine 1 eklemek ve 1 çıkarmak için kullanılır. Bunlar Go dilinde doğrudan değişken üzerinde (bir ifade üzerinde değil) çalışabilen tek operatörlerdir.

package main

import "fmt"

func main() {
    x := 1
    x++
    fmt.Println("x++ =", x) // 2 olarak çıktı verir

    y := 10
    y--
    fmt.Println("y-- =", y) // 9 olarak çıktı verir
}

Go dilinde, x++ veya x-- bir ifadenin bir parçası olamaz. Örneğin, z := x++ bu şekilde bir ifadeye izin verilmez.

7.2 Tür Dönüşümü

Go dilinin tipi statiktir, yani bir değişken bir kere tanımlandığında, tipi değiştirilemez. Bu nedenle bazen bir değişkenin bir türden diğer bir türe dönüştürülmesi gerekebilir. Go dilinde otomatik tür dönüşümü bulunmamaktadır; açık tür dönüşümü gerekmektedir.

Örnek:

package main

import (
	"fmt"
)

func main() {
	var i int = 42
	fmt.Println(float64(i)) // int'i float64'e dönüştür

	var f float64 = 3.14
	fmt.Println(int(f)) // float64'ü int'e dönüştür, ondalık kısmı atılacaktır
}

Tür dönüşümü yaparken, verinin dönüşüm sürecinde güvenli olduğundan emin olmak önemlidir, örneğin, bir kayan nokta sayısını bir tamsayıya dönüştürürken hassasiyetin kaybedilme olasılığı gibi.