четверг, 10 января 2019 г.

Основы Go: литералы срезов

Литерал среза такой же как и для массива, но без размера.

Вот пример создания массива:

[3]bool{true, true, false}

В следующем примере будет создан такой же массив, как и выше, а затем построен срез, ссылающийся на него:

[]bool{true, true, false}

Примеры литералов срезов:

package main

import "fmt"

func main() {
  q := []int{2, 3, 5, 7, 11, 13}
  fmt.Println(q)

  r := []bool{true, false, true, true, false, true}
  fmt.Println(r)

  s := []struct {
    i int
    b bool
  }{
    {2, true},
    {3, false},
    {5, true},
    {7, true},
    {11, false},
    {13, true},
  }
  fmt.Println(s)
}

Вывод:

[2 3 5 7 11 13]
[true false true true false true]
[{2 true} {3 false} {5 true} {7 true} {11 false} {13 true}]

Значения по умолчанию в срезах

Когда вы хотите создать срез, то можете опустить верхнюю или нижнюю границы, чтобы использовать значения по умолчанию.

Значением по умолчанию для нижней границы является нуль, а для верхней - размер среза.

Для массива

var a [10]int

следующие выражения создания среза эквивалентны:

a[0:10]
a[:10]
a[0:]
a[:]

Пример:

package main

import "fmt"

func main() {
  s := []int{2, 3, 5, 7, 11, 13}

  s = s[1:4]
  fmt.Println(s)

  s = s[:2]
  fmt.Println(s)

  s = s[1:]
  fmt.Println(s)
}

Вывод:

[3 5 7]
[3 5]
[5]


Читайте также:


Комментариев нет:

Отправить комментарий