Menu
CoddyTech

Tạo slice bằng make

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

Trong các bài học trước, chúng ta đã tạo lát cắt bằng các biểu thức lát cắt. Tuy nhiên, còn có một hàm khác tên là <strong>make</strong>. Hàm này cho phép bạn cấp phát một mảng nền cho lát cắt với độ dài và sức chứa nhất định. Lý do có một hàm như <strong>make</strong> là vì lát cắt không có độ dài xác định từ trước. Vì vậy, hàm <strong>make</strong> cho phép bạn tạo một lát cắt có độ dài được chỉ định.

Nhưng đừng nhầm, độ dài của nó không cố định. Bạn vẫn có thể thêm phần tử vào đó.

Cú pháp của hàm <strong>make</strong> như sau:

mySlice = make([]string, 4)

Bạn chỉ cần dùng <strong>make</strong>. Đối số thứ nhất (<strong>[]string</strong>) mô tả kiểu dữ liệu của lát cắt, còn đối số thứ hai (<strong>4</strong>) cho <strong>make</strong> biết độ dài cần có của lát cắt. Đối số thứ hai cũng mô tả sức chứa của mảng nền. Vì vậy, độ dài và sức chứa của lát cắt được trả về sẽ bằng nhau.

 

Vậy tại sao chúng ta cần dùng hàm <strong>make</strong> để tạo lát cắt nếu có thể chỉ cần dùng biểu thức lát cắt đơn giản?

Câu trả lời là trong một số tình huống, chúng ta cần thêm giá trị mới vào lát cắt. Nếu lát cắt không đủ sức chứa, chương trình sẽ tạo một mảng nền mới. Thao tác này khá tốn bộ nhớ vì cần cấp phát lại. Hàm <strong>make</strong> ngăn việc cấp phát lại này bằng cách cấp phát trước không gian bộ nhớ.

Với <strong>make</strong>, chúng ta có thể chỉ định độ dài và sức chứa bằng các giá trị khác nhau như sau:

mySlice = make([]string, 4, 6)

Nhìn chung, hàm <strong>make</strong> có thể được biểu diễn như bên dưới:


challenge icon

Thử thách

Dễ

Dùng hàm <strong>make</strong> để tạo một slice có tên <strong>coddy</strong> với độ dài là 4 và dung lượng là 5.

  • Thêm giá trị "Learn Golang" vào chỉ số 0. 
  • Thêm giá trị "Coddy.tech" vào chỉ số 3.
  • Duyệt qua slice này bằng từ khóa <strong>range</strong> và in chỉ số cùng giá trị ra màn hình.

Tự làm thử

package main

import "fmt"

func main() {
    // Tạo slice coddy bằng make  
    
 	// Thêm phần tử tại chỉ số 0 và 3


    // Duyệt qua slice coddy



}

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