Menu
CoddyTech

Ánh xạ

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

Map là một kiểu tập hợp, giống như mảng và slice. Map lưu dữ liệu theo các cặp khóa và giá trị, đồng thời cho phép tra cứu giá trị nhanh chóng.

Cú pháp khai báo map như sau:

products := map[string]int{}

Tương tự như khi khai báo biến cho mảng và slice, ta có thể dùng cách khai báo ngắn (:=) hoặc từ khóa var, theo sau là tên, rồi đến từ khóa map. Bên trong dấu ngoặc vuông, ta chỉ định kiểu của khóa, cuối cùng là kiểu của giá trị hay kiểu của phần tử.

 

Slice và mảng cũng là các kiểu khóa-giá trị, nhưng khóa chỉ là chỉ số. Trong map, ta có thể dùng bất kỳ kiểu nào làm khóa, miễn là kiểu đó có thể so sánh được. Các kiểu thường dùng là int và string.

Tất cả phần tử trong map phải có cùng kiểu, bạn không thể kết hợp nhiều kiểu trong một map.

Hãy khởi tạo map:

products := map[string]int{
   "iPhone": 1200,
   "MacBook": 4000,
   "Keyboard": 400,
}

Tương tự như với slice và mảng, ta có thể truy cập các phần tử bằng khóa. Trong trường hợp này, khóa là giá trị ta đã xác định cho từng phần tử. Ví dụ, để lấy giá của bàn phím:

fmt.Println("The Price of Keyboard:", products["Keyboard"])

Đầu ra:

The Price of Keyboard: 400

Ta có thể in ra tất cả phần tử của map, giống như với slice:

fmt.Println(products)

Kết quả sẽ là:

map[iPhone:1200 MacBook:4000 Keyboard:400]

 

challenge icon

Thử thách

Dễ

Chúng ta có một tập hợp sách, mỗi cuốn có số trang khác nhau như sau:

  • Sách Python có 300 trang
  • Sách Golang có 400 trang
  • Sách Rust có 500 trang

Hãy triển khai bằng bản đồ và in ra số trang của sách Golang .

Tự làm thử

package main

import "fmt"

func main() {
    // Định nghĩa một map 
    

    // In ra số trang của cuốn sách Golang
     
}

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