📜  如何在 Golang 中重复一段字节?

📅  最后修改于: 2021-10-24 13:15:55             🧑  作者: Mango

在 Go 语言中切片比数组更强大、灵活、方便,是一种轻量级的数据结构。切片是一个可变长度的序列,用于存储相似类型的元素,不允许在同一个切片中存储不同类型的元素。
在 Go 字节切片中,您可以在Repeat()函数的帮助下将切片的元素重复特定次数。此方法返回一个新字符串,其中包含切片的重复元素。它是在 bytes 包下定义的,因此您必须在程序中导入 bytes 包才能访问 Repeat函数。

句法:

func Repeat(slice_1 []byte, count int) []byte

这里, slice_1表示字节切片,计数值表示要重复给定slice_1元素的次数

例子:

// Go program to illustrate how to repeat
// the elements of the slice of bytes
package main
  
import (
    "bytes"
    "fmt"
)
  
// Main function
func main() {
  
    // Creating and initializing
    // the slice of bytes
    // Using shorthand declaration
    slice_1 := []byte{'G', 'E', 'E', 'K', 'S'}
    slice_2 := []byte{'A', 'P', 'P', 'L', 'E'}
  
    // Repeating the given slice
    // Using Repeat function
    res1 := bytes.Repeat(slice_1, 2)
    res2 := bytes.Repeat(slice_2, 4)
    res3 := bytes.Repeat([]byte("Geeks"), 5)
  
    // Display the results
    fmt.Printf("Result 1: %s", res1)
    fmt.Printf("\nResult 2: %s", res2)
    fmt.Printf("\nResult 3: %s", res3)
}

输出:

Result 1: GEEKSGEEKS
Result 2: APPLEAPPLEAPPLEAPPLE
Result 3: GeeksGeeksGeeksGeeksGeeks

注意:如果计数的值为负或 ( len(slice_1) * count ) 的结果溢出,则此方法将发生恐慌。

例子:

// Go program to illustrate how to repeat
// the elements of the slice of bytes
package main
  
import (
    "bytes"
    "fmt"
)
  
// Main function
func main() {
  
    // Creating and initializing 
    // the slice of bytes
    // Using shorthand declaration
    slice_1 := []byte{'G', 'E', 'E', 'K', 'S'}
    slice_2 := []byte{'A', 'P', 'P', 'L', 'E'}
  
    // Repeating the given slice
    // Using Repeat function
    // If we use a negative 
    // value in the count
    // then this function will 
    // panic because negative
    // values are not allowed to count
    res1 := bytes.Repeat(slice_1, -2)
    res2 := bytes.Repeat(slice_2, -4)
    res3 := bytes.Repeat([]byte("Geeks"), -5)
  
    // Display the results
    fmt.Printf("Result 1: %s", res1)
    fmt.Printf("\nResult 2: %s", res2)
    fmt.Printf("\nResult 3: %s", res3)
}

输出: