Files
learngo/16-slices/questions/1-slices-vs-arrays.md
Firas Khalil Khana 822016daa1 More i capitalization
2021-06-08 11:19:26 +03:00

2.4 KiB

Slices vs Arrays Quiz

Why you want to use a slice instead of an array?

  1. I like arrays more
  2. I want to create a dynamic collection, so I need an array
  3. A slice's length is dynamic, so I can create dynamic collections CORRECT

Where does the length of a slice belong to?

  1. Compile-Time
  2. Runtime CORRECT
  3. Walk-Time
  4. Sleep-Time

2: A slice's length is not a part of its type. So its length can change at runtime.

Which function call below is correct?

// Let's say there's a function like this.
func sort(nums []int) {
    // ...
}
  1. sort([...]int{3, 1, 6})
  2. sort([]int32{3, 1, 6})
  3. sort([]int{3, 1, 6}) CORRECT

1: You can't call the sort function using an array. It expects an int slice.

2: You can't call the sort function using an int32 slice. It expects an int slice.

3: That's right! You can pass an int slice to the sort function.

What is the zero value of this slice?

var tasks []string
  1. 0
  2. 1
  3. nil CORRECT
  4. unknown

3: This is a nil slice. Unlike an array, a slice's zero value is nil.

What does this code print?

var tasks []string
fmt.Println(len(tasks))
  1. 0 CORRECT
  2. 1
  3. nil
  4. It doesn't work.

1: Yes, you can use the len function on a nil slice. It returns 0 because the slice doesn't contain any elements yet.

What does this code print?

var tasks []string
fmt.Println(tasks[0])
  1. 0
  2. 1
  3. nil
  4. It doesn't work. CORRECT

4: You can't get an element that does not exist. A nil slice does not contain any elements.

Which declaration below is a correct slice declaration?

  1. [...]int{}
  2. [2]string{"hello", "world"}
  3. []string{"hello", "world"} CORRECT
  4. string[2]{"hello", world"}

This code doesn't work, why?

colors := []string{"red", "blue", "green"}
tones := []string{"dark", "light"}

if colors == tones {
    // ...
}
  1. The slices have different lengths
  2. If statement doesn't contain any statements
  3. Slices cannot be compared CORRECT

3: That's right! A slice value can only be compared to a nil value.

What is the length of this slice?

[]uint64{}
  1. 64
  2. 1
  3. 0 CORRECT
  4. Error

3: That's right. This is an empty slice, it doesn't contain any elements.

What is the length of this slice?

[]string{"I'm", "going", "to", "stay", "\"here\""}
  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5 CORRECT