Menu
CoddyTech

Kiểm tra khóa

Bài học 20 trên 21 trong khóa học Slice và map trong Go của Coddy.

Đến thời điểm này, chúng ta đã học cách thêm và xóa giá trị khỏi map. Trong bài học này, chúng ta sẽ học cách kiểm tra xem map có chứa một khóa cụ thể hay không. Ta có thể làm việc này bằng điều kiện if, như trong ví dụ sau:

var books = map[string]int{
    "Golang":  1,
    "Python": 2,
    "Rust":  3,
}
if v, k := books["Python"]; k{
    fmt.Println(v)
}

Trong ví dụ này, chúng ta có một map tên là books. Dùng if, ta kiểm tra xem map có chứa khóa "Python" hay không. Nếu có, ta in ra giá trị tương ứng. Trong ví dụ này, kết quả sẽ là 2.

k trong <strong>books["Python"]; k{</strong> chứa một giá trị boolean, có thể là true hoặc false. Nếu khóa tồn tại, nó sẽ trả về true, và ta có thể kiểm tra điều này bằng cách in giá trị ra màn hình:

if v, k := books["Python"]; k{
    fmt.Println(k,v)
}

Đầu ra sẽ là:

true 1

Go có một phiên bản đơn giản hơn, có thể viết như sau:

v, k := books ["a"]
fmt.Println(v, k)

Lệnh này sẽ trả về giá trị v và k là một giá trị boolean true (nếu khóa tồn tại) hoặc false (nếu khóa không tồn tại):

0 false

Trong trường hợp này, a không có trong map, nên lệnh trả về 0 và false.

challenge icon

Thử thách

Dễ

Viết chương trình nhận đầu vào từ người dùng dưới dạng khóa và kiểm tra xem khóa này có tồn tại trong ánh xạ đã cho hay không:

  • Nếu có, hãy in thông báo <strong>"{key} exists with a value of {value}"</strong>.
    {key} là khóa do người dùng nhập, còn {value} là giá trị tương ứng trong ánh xạ.
  • Nếu không có, hãy in <strong>"{key} does not exist in the map"</strong>.

Tự làm thử

package main

import "fmt"


func main() {
	// Nhận đầu vào từ bạn làm khóa. Đừng thay đổi phần này!
	var key string
	fmt.Scanln(&key)
	// Ánh xạ books. Đừng thay đổi phần này!
	books := map[string]int{
		"Golang": 1,
		"Python": 2,
		"Rust":   3,
		"Lua": 4,
		"Java": 5,
	}

	// Kiểm tra xem khóa có tồn tại trong ánh xạ không

}

Tất cả bài học trong Slice và map trong Go

Tự luyện tập: Trình biên dịch Go online