Bài học theo mô-đun (1/5)
câu lệnh if, else và init
Trong Go, cú pháp if là cú pháp cổ điển nhưng có hai điểm khác biệt quan trọng
so với C/Java: không có dấu ngoặc đơn xung quanh điều kiện và
khả năng khai báo một biến tạm thời trực tiếp trong if
(câu lệnh init).
Cú pháp cơ bản
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}Dấu ngoặc nhọn là bắt buộc, ngay cả đối với các khối một dòng. các
điều kiện phải thuộc loại bool: không có "tính trung thực" như Python hoặc JS.
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okCâu lệnh init: phạm vi giới hạn ở if
Bạn có thể khai báo một biến hợp lệ chỉ bên trong if/else,
tách nó khỏi điều kiện bằng ;:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùĐó là mẫu thành ngữ để xử lý lỗi mà không làm ô nhiễm phạm vi bên ngoài.
Tạo bóng trong phạm vi if
Nếu một biến ngoài bị "bị che khuất" bởi init, thì bên trong nếu phiên bản địa phương thắng. Ngay sau đó, cái bên ngoài lại xuất hiện.
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x) // mai stampato (3 < 5)
} else {
fmt.Println("else:", x) // 3
}
fmt.Println("dopo:", x) // 10 — quella esternaKhông có toán tử ternary
Cờ vây không có cond ? a : b. Đối với các bài tập có điều kiện, bạn cần có if/else
trong 3-4 dòng - đó là một lựa chọn thiết kế để dễ đọc.
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}Hãy thử nó
In 'positivo', 'zero' hoặc 'negativo' tùy thuộc vào giá trị của n.
Hiển thị gợi ý
Chuỗi `if / else if / else` có các điều kiện trên dấu hiệu.
Giải pháp khả dụng sau 3 lần thử
Sử dụng câu lệnh init để khai báo v := 42 trong if và chỉ in nó nếu v >= 18.
Hiển thị gợi ý
Cú pháp: `if init; điều kiện { ... }`.
Giải pháp khả dụng sau 3 lần thử
Chương trình này in gì?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)Tóm tắt lại
- Điều kiện không có dấu ngoặc đơn, dấu ngoặc nhọn luôn bắt buộc.
- Điều kiện phải là
bool: không hàm ý tính trung thực. - Ban đầu
if v, err := f(); err == nil { ... }giới hạn phạm vivvàerr. - Shadowing init: chú ý không đổ bóng các biến bên ngoài.
- Không có ternary: viết
if/elsemở rộng.