Menu
CoddyTech

使用 make 创建切片

Coddy Go 中的切片和映射 课程的第 12 课,共 21 课。

在前几节课中,我们使用切片字面量创建了切片。不过,还有一个名为 <strong>make</strong> 的函数。它可以为切片分配一个具有指定长度和容量的底层数组。之所以需要像 <strong>make</strong> 这样的函数,是因为切片的长度不是预先确定的。因此,<strong>make</strong> 函数可以让你创建指定长度的切片。

但别误会,切片的长度不会因此变成固定值。你仍然可以向其中追加元素。

<strong>make</strong> 函数的语法如下:

mySlice = make([]string, 4)

你只需使用 <strong>make</strong>。第一个参数(<strong>[]string</strong>)描述切片的类型,第二个参数(<strong>4</strong>)告诉 <strong>make</strong> 这个切片需要多长。第二个参数也表示底层数组的容量。因此,返回的切片长度和容量相等。

 

那么,如果直接使用简单的切片字面量就可以创建切片,为什么还需要使用 <strong>make</strong> 函数呢?

答案是,在某些情况下,我们需要向切片添加新值。如果切片的容量不足,就会创建一个新的底层数组。由于需要重新分配内存,这个操作会消耗较多内存。<strong>make</strong> 函数可以通过预先分配内存空间来避免这种重新分配。

使用 <strong>make</strong> 时,我们可以像这样指定不同的长度和容量:

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

一般来说,<strong>make</strong> 函数可以表示如下:


challenge icon

挑战

简单

使用 <strong>make</strong> 函数创建一个名为 <strong>coddy</strong> 的切片,长度 为 4,容量 为 5。

  • 将值 "Learn Golang" 添加到索引 0。 
  • 将值 "Coddy.tech" 添加到索引 3。
  • 使用 <strong>range</strong> 关键字遍历这个切片,并将索引 和值 打印到屏幕上。

亲手试试

package main

import "fmt"

func main() {
    // 用 make 创建 coddy 切片  
    
 	// 在索引 0 和 3 处添加元素


    // 遍历 coddy 切片



}

Go 中的切片和映射中的所有课

自己练习: Go 在线编译器