Mantiqiy ifodalar
Go dasturlash tilida mantiqiy ifoda (boolean expression) — bu hisoblanganda faqat ikkita mumkin bo'lgan qiymatdan birini: true (rost) yoki false (yolg'on) qaytaruvchi ifodadir.
Mantiqiy ifodalar dasturning keyingi yo'nalishini belgilovchi if...else shartlari va sikllarning (for) poydevori hisoblanadi.
Go tilida mantiqiy o'zgaruvchilarni yaratish uchun bool kalit so'zidan foydalaniladi:
package main
import "fmt"
func main() {
var boolTrue bool = true
var boolFalse bool = false
fmt.Println("Mantiqiy qiymatlar:", boolTrue, "va", boolFalse)
}
Natija:
Mantiqiy qiymatlar: true va false
Ikki qiymatni o'zaro solishtirganda taqqoslash operatorlari mantiqiy ifodani hosil qiladi:
number1 := 9
number2 := 3
result := number1 > number2 // true
Bu yerda number1 > number2 ifodasi hisoblanib, natija true bo'ladi va result o'zgaruvchisiga o'zlashtiriladi.
| Operator | Tavsif | Misol | Natija |
|---|---|---|---|
== | Tenglik (Equal to) | 3 == 5 | false |
!= | Teng emaslik (Not equal to) | 3 != 5 | true |
> | Katta (Greater than) | 7 > 4 | true |
< | Kichik (Less than) | 7 < 4 | false |
>= | Katta yoki teng | 5 >= 5 | true |
<= | Kichik yoki teng | 4 <= 2 | false |
package main
import "fmt"
func main() {
number1 := 12
number2 := 20
var result bool
result = (number1 == number2)
fmt.Printf("%d == %d : %t\n", number1, number2, result)
result = (number1 != number2)
fmt.Printf("%d != %d : %t\n", number1, number2, result)
result = (number1 > number2)
fmt.Printf("%d > %d : %t\n", number1, number2, result)
result = (number1 < number2)
fmt.Printf("%d < %d : %t\n", number1, number2, result)
}
Natija:
12 == 20 : false
12 != 20 : true
12 > 20 : false
12 < 20 : true
Bir nechta mantiqiy shartlarni birlashtirish yoki inkor qilish uchun mantiqiy operatorlar ishlatiladi:
| Operator | Nomi | Tavsif | Misol |
|---|---|---|---|
&& | Mantiqiy VA (AND) | Barcha ifodalar true bo'lsagina true qaytaradi | (5 > 2) && (4 > 1) → true |
|| | Mantiqiy YOKI (OR) | Kamida bitta ifoda true bo'lsa true qaytaradi | (5 < 2) || (4 > 1) → true |
! | Mantiqiy INKOR (NOT) | Natijani teskarisiga o'giradi (true → false) | !(5 > 2) → false |
package main
import "fmt"
func main() {
number1 := 6
number2 := 12
number3 := 18
var result bool
// && operatori - ikkala shart ham true bo'lishi kerak
result = (number1 < number2) && (number2 < number3)
fmt.Println("AND natijasi:", result) // true
// || operatori - kamida bitta shart true bo'lishi yetarli
result = (number1 > number2) || (number2 < number3)
fmt.Println("OR natijasi:", result) // true
// ! operatori - qiymatni teskarisiga aylantiradi
result = !(number1 < number2)
fmt.Println("NOT natijasi:", result) // false
}
Natija:
AND natijasi: true
OR natijasi: true
NOT natijasi: false
[!TIP] Go tilida
&&va||operatorlari qisqa tutashuv (short-circuit evaluation) usulida ishlaydi:
&&amallarida birinchi shartfalsebo'lsa, ikkinchi shart hatto hisoblab o'tirilmaydi (chunki umumiy natija baribirfalse).||amallarida birinchi sharttruebo'lsa, ikkinchi shart hisoblab o'tirilmaydi (chunki natija allaqachontrue).