Ana içeriğe geç
Modül 1 · Ders 4 ders 5Kurstaki 4/50~8 min
Modül dersleri (4/5)

Operatörler

Go'da beklediğiniz klasik operatörler var ve birkaç sürpriz var: aritmetik, karşılaştırma, mantıksal, bitsel. Üçlü operatör yok (a ? b : c), aşırı yükleme yok, türler arasında örtülü dönüşüm yok. Sadelik bir özelliktir.

Aritmetik

Go
a, b := 10, 3
fmt.Println(a + b)  // 13
fmt.Println(a - b)  // 7
fmt.Println(a * b)  // 30
fmt.Println(a / b)  // 3   ← divisione INTERA tra interi
fmt.Println(a % b)  // 1   ← resto (modulo)

Arttırma ve eksiltme ifade değil, AÇIKLAMADIR

x++ ve x-- bir değer üretmez: bunlar "eylemlerdir" ve hiçbir şey değildir daha fazlası. C'deki gibi y := x++ yok.

Go
x := 5
x++          // ok: incrementa x
// y := x++  // ERRORE di compilazione
fmt.Println(x) // 6

Karşılaştırmak

== != < <= > >=, bool değerini döndürür. Sayılara ve dizelere uygulanırlar; için TÜM alanların karşılaştırılabilir olması gerekir (içeride dilim/harita olmamalıdır).

Go
"abc" == "abc"  // true
"abc" < "abd"   // true (ordine lessicografico)
3 != 4           // true

Kısa devre ile mantıksal

&&, ||, !. Soldan sağa kısa devre yapıyorlar: eğer ilki işlenen sonucu belirlemek için yeterlidir, ikincisi bile değildir değerlendirildi.

Go
adult := age >= 18
seniorAdult := age >= 18 && age < 65

Bitsel

& AND, | VEYA, ^ XOR, << sola kaydırma, >> sağa kaydırma, &^ VE DEĞİL (biraz net). Bayraklar, ikili ayrıştırma ve optimizasyonlar:

Go
flags := uint8(0b0000_0011)
flags |= 0b0000_0100   // imposta un bit:    0000_0111
flags &^= 0b0000_0010  // cancella un bit:   0000_0101
hasFlag := flags & 0b0000_0100 != 0  // true

Örtülü dönüşüm yok

Go'da 1 + 1.5 derler, çünkü her ikisi de türlenmemiş değişmez değerlerdir. Ancak var i int = 1; i + 1.5 DEĞİL yapmaz: float64(i) + 1.5'e ihtiyacınız vardır.

Go
i := 1
f := 1.5
// i + f          // ERRORE
float64(i) + f    // 2.5

Sıra sende

Egzersiz#go.m1.l4.e1
Denemeler: 0Yükleniyor…

17'nin 5'e bölümünden kalan kısmı hesaplayıp yazdırın. Beklenen: 2.

Düzenleyici yükleniyor…
İpucu göster

Modülo operatörü %'dir.

3 denemeden sonra çözüm mevcut

Egzersiz#go.m1.l4.e2
Denemeler: 0Yükleniyor…

Yaş 18 ila 65 arasındaysa doğru, aksi takdirde yanlış yazdırın.

Düzenleyici yükleniyor…
İpucu göster

İki karşılaştırmayı `&&` ile birleştirin.

3 denemeden sonra çözüm mevcut

Quiz#go.m1.l4.e3
Hazır

Bu kod ne yazdırıyor?

Go
a, b := 7, 2
fmt.Println(a/b, a%b)
Cevap seçenekleri

Özet

  • Klasik aritmetik; Tam sayılar arasındaki / tamsayı bölümüdür (keser).
  • ++ ve -- ifadedir, ifade değildir: hayır y := x++.
  • Karşılaştırma ve mantıksal operatörler bool üretir; &&/|| kısa devre.
  • İşaretler ve ikili ayrıştırma için bit düzeyinde & | ^ << >> &^.
  • Farklı türler arasında örtülü dönüşüm yok: type(x) kullanın.