go Slice Header Quiz

2026-08-30 浏览 (1)

Slice Header Quiz

What is a slice header?

  1. The first element of a slice value
  2. The first element of the backing array
  3. A tiny data structure that describes all or some part of a backing array CORRECT
  4. A data structure that contains the elements of a slice

3: Yes! It's just a tiny data structure with three numeric fields.

4: A slice doesn't contain any elements on its own.

What are the fields of a slice value?

  1. Pointer, length, and capacity CORRECT
  2. Length and capacity
  3. Only a pointer

Which slice value does the following slice header describe?

SLICE HEADER:

  • Pointer : 100th
  • Length : 5
  • Capacity: 10

Assume that the backing array is this one:

var array [10]string
  1. array[5:]
  2. array[:5] CORRECT
  3. array[3:]
  4. array[100:]

1: This slice's capacity is 5, it can only see the elements beginning with the 6th element.

2: That's right. array[:5] returns a slice with the first 5 elements of the array (len is 5), but there are 5 more elements in the backing array of that slice, so in total its capacity is 10.

3: This slice's capacity is 7, it can only see the elements beginning with the 4th element.

4: This is an error. The backing array doesn't have 100 elements.

Which one is the slice header of the following slice?

var tasks []string
  1. Pointer: 0, Length: 0, Capacity: 0 CORRECT
  2. Pointer: 10, Length: 5, Capacity: 10
  3. Pointer: 0, Length: 1, Capacity: 1

1: A nil slice doesn't have backing array, so all the fields are equal to zero.

What is the total memory usage of this code?

var array [1000]int64

array2 := array
slice := array2[:]
  1. 1024 bytes
  2. 2024 bytes
  3. 3000 bytes
  4. 16024 bytes CORRECT

4: array is 1000 x int64 (8 bytes) = 8000 bytes. Assigning an array copies all its elements, so array2 adds additional 8000 bytes. A slice doesn't store anything on its own. Here, it's being created from array2, so it doesn't allocate a backing array as well. A slice header's size is 24 bytes. So in total: This program allocates 16024 bytes.

What value does this code pass to the sort.Ints function?

nums := []int{9, 7, 5, 3, 1}
sort.Ints(nums)
  1. [9 7 5 3 1] — All the values of the nums slice
  2. A pointer to the backing array of the nums slice
  3. A pointer, length and capacity as three different arguments
  4. The slice header that is stored in the nums variable CORRECT

1: No, a slice value doesn't contain any elements. So it cannot pass the elements.

2: Sorry but not only that.

3: Nope. Remember, they are packed in a tiny data structure called the ....?

4: Yep! A slice value is a slice header (pointer, length and capacity). A slice variable stores the slice header.

你可能感兴趣的文章

go Capacity and Append Mechanics Quiz

go Advanced Slice Operations Quiz

go Slices vs Arrays Quiz

go The Mechanics of Append Quiz

go Slice Quizzes

go Backing Array Quiz

go Slicing Quiz

go Appending Quiz

  • 所属分类: 后端技术
  • 本文标签: golang
  • 版权声明: 本文链接 https://seaxiang.com/blog/qClFjQN7