Как подсчитать конкретные символы, присутствующие в срезе в Голанге?

Опубликовано: 20 Февраля, 2022

В языке Go фрагмент более мощный, гибкий, удобный, чем массив, и представляет собой легкую структуру данных. Срез представляет собой последовательность переменной длины, в которой хранятся элементы аналогичного типа, вам не разрешается хранить элементы разных типов в одном срезе.
В срезе байтов Go вы можете подсчитать элементы, присутствующие в нем, с помощью функции Count. Эта функция возвращает общее количество элементов или общее количество определенного элемента, доступного в данном срезе. Эта функция определена в пакете байтов, поэтому вам необходимо импортировать пакет байтов в свою программу для доступа к функции счетчика.

Синтаксис:

 func Count (slice_1, sep_slice [] byte) int

Если sep_slice является пустым срезом, то эта функция возвращает 1 + количество кодовых точек в кодировке UTF-8, присутствующих в срезе_1 .

Example:

// Go program to illustrate how to
// count the elements of the slice
package main
  
import (
    "bytes"
    "fmt"
)
  
func main() {
  
    // Creating and initializing 
    // slices of bytes
    // Using shorthand declaration
    slice_1 := []byte{"A", "N", "M",
            "A", "P", "A", "A", "W"}
      
    slice_2 := []byte{"g", "e", "e", "k", "s"}
  
    // Counting elements in the given slices
    // Using Count function
    res1 := bytes.Count(slice_1, []byte{"A"})
    res2 := bytes.Count(slice_2, []byte{"e"})
    res3 := bytes.Count([]byte("GeeksforGeeks"), []byte("ks"))
    res4 := bytes.Count([]byte("Geeks"), []byte(""))
    res5 := bytes.Count(slice_1, []byte(""))
  
    // Displaying results
    fmt.Println("Result 1:", res1)
    fmt.Println("Result 2:", res2)
    fmt.Println("Result 3:", res3)
    fmt.Println("Result 4:", res4)
    fmt.Println("Result 5:", res5)
  
}

Выход:

Результат 1: 4
Результат 2: 2
Результат 3: 2
Результат 4: 6
Результат 5: 9