Методы Go Slice: изучение общих операций на примерах кода

Вот несколько методов, обычно используемых с фрагментами Go, а также примеры кода:

  1. append(): добавляет элементы в срез.

    package main
    import (
    "fmt"
    )
    func main() {
    slice := []int{1, 2, 3}
    slice = append(slice, 4, 5)
    fmt.Println(slice) // Output: [1 2 3 4 5]
    }
  2. copy(): копирует элементы из одного фрагмента в другой.

    package main
    import (
    "fmt"
    )
    func main() {
    slice1 := []int{1, 2, 3}
    slice2 := make([]int, len(slice1))
    copy(slice2, slice1)
    fmt.Println(slice2) // Output: [1 2 3]
    }
  3. len(): возвращает длину среза.

    package main
    import (
    "fmt"
    )
    func main() {
    slice := []int{1, 2, 3}
    length := len(slice)
    fmt.Println(length) // Output: 3
    }
  4. cap(): возвращает емкость среза.

    package main
    import (
    "fmt"
    )
    func main() {
    slice := make([]int, 3, 5)
    capacity := cap(slice)
    fmt.Println(capacity) // Output: 5
    }
  5. slice[start:end]: извлекает часть фрагмента на основе начального и конечного индексов.

    package main
    import (
    "fmt"
    )
    func main() {
    slice := []int{1, 2, 3, 4, 5}
    subSlice := slice[1:3]
    fmt.Println(subSlice) // Output: [2 3]
    }
  6. slice[:]: копирует весь фрагмент.

    package main
    import (
    "fmt"
    )
    func main() {
    slice := []int{1, 2, 3}
    newSlice := slice[:]
    fmt.Println(newSlice) // Output: [1 2 3]
    }
  7. slice[:end]или slice[start:]: извлекает элементы с начала или до конца среза соответственно.

    package main
    import (
    "fmt"
    )
    func main() {
    slice := []int{1, 2, 3, 4, 5}
    startSlice := slice[:3]
    endSlice := slice[2:]
    fmt.Println(startSlice) // Output: [1 2 3]
    fmt.Println(endSlice)   // Output: [3 4 5]
    }
  8. slice[start:end:capacity]: определяет новый фрагмент с определенной емкостью.

    package main
    import (
    "fmt"
    )
    func main() {
    slice := []int{1, 2, 3, 4, 5}
    newSlice := slice[1:3:4]
    fmt.Println(newSlice) // Output: [2 3]
    fmt.Println(cap(newSlice)) // Output: 4
    }