如何在Golang中比较两个字节切片?

使用Go语言切片比函数强大, 灵活, 方便Array, 是一种轻量级的数据结构。切片是长度可变的序列, 用于存储相似类型的元素, 不允许在同一切片中存储不同类型的元素。在Go切片中, 你可以使用以下方法将两个字节类型的切片彼此进行比较Compare()函数。此函数返回一个整数值, 该整数值表示这些条带相等或不相等, 并且这些值是:

  • 如果结果为0, 则slice_1 == slice_2。
  • 如果结果为-1, 则slice_1 <slice_2。
  • 如果结果为+1, 则slice_1> slice_2。

此函数在bytes包下定义, 因此, 你必须在程序中导入bytes包才能访问Compare函数。

语法如下:

func Compare(slice_1, slice_2 []byte) int

让我们借助示例来讨论这个概念:

范例1:

// Go program to illustrate how to
// compare two slices of bytes
package main
  
import (
     "bytes"
     "fmt"
)
  
// Main function
func main() {
  
     // Creating and initializing
     // slices of bytes
     // Using shorthand declaration
  
     slice_1 := []byte{ 'G' , 'E' , 'E' , 'K' , 'S' }
     slice_2 := []byte{ 'G' , 'E' , 'e' , 'K' , 'S' }
  
     // Comparing slice
     // Using Compare function
     res := bytes.Compare(slice_1, slice_2)
  
     if res == 0 {
         fmt.Println( "!..Slices are equal..!" )
     } else {
         fmt.Println( "!..Slice are not equal..!" )
     }
}

输出如下:

!..Slice are not equal..!

范例2:

// Go program to illustrate how
// to compare two slices of byte
package main
  
import (
     "bytes"
     "fmt"
)
  
func main() {
  
     // Creating and initializing
     // slices of bytes
     // Using shorthand declaration
     slice_1 := []byte{ 'A' , 'N' , 'M' , 'O' , 'P' , 'Q' }
     slice_2 := []byte{ 'a' , 'g' , 't' , 'e' , 'q' , 'm' }
     slice_3 := []byte{ 'A' , 'N' , 'M' , 'O' , 'P' , 'Q' }
     slice_4 := []byte{ 'A' , 'n' , 'M' , 'o' , 'p' , 'Q' }
  
     // Displaying slices
     fmt.Println( "Slice 1: " , slice_1)
     fmt.Println( "Slice 2: " , slice_2)
     fmt.Println( "Slice 3: " , slice_3)
     fmt.Println( "Slice 4: " , slice_4)
  
     // Comparing slices
     // Using Compare function
     res1 := bytes.Compare(slice_1, slice_2)
     res2 := bytes.Compare(slice_1, slice_3)
     res3 := bytes.Compare(slice_1, slice_4)
     res4 := bytes.Compare(slice_2, slice_3)
     res5 := bytes.Compare(slice_2, slice_4)
     res6 := bytes.Compare(slice_2, slice_1)
     res7 := bytes.Compare(slice_3, slice_1)
     res8 := bytes.Compare(slice_3, slice_2)
     res9 := bytes.Compare(slice_3, slice_4)
     res10 := bytes.Compare(slice_4, slice_1)
     res11 := bytes.Compare(slice_4, slice_2)
     res12 := bytes.Compare(slice_4, slice_3)
     res13 := bytes.Compare(slice_4, slice_4)
  
     // Displaying results
     fmt.Println( "\nResult 1:" , res1)
     fmt.Println( "Result 2:" , res2)
     fmt.Println( "Result 3:" , res3)
     fmt.Println( "Result 4:" , res4)
     fmt.Println( "Result 5:" , res5)
     fmt.Println( "Result 6:" , res6)
     fmt.Println( "Result 7:" , res7)
     fmt.Println( "Result 8:" , res8)
     fmt.Println( "Result 9:" , res9)
     fmt.Println( "Result 10:" , res10)
     fmt.Println( "Result 11:" , res11)
     fmt.Println( "Result 12:" , res12)
     fmt.Println( "Result 13:" , res13)
}

输出如下:

Slice 1:  [65 78 77 79 80 81]
Slice 2:  [97 103 116 101 113 109]
Slice 3:  [65 78 77 79 80 81]
Slice 4:  [65 110 77 111 112 81]

Result 1: -1
Result 2: 0
Result 3: -1
Result 4: 1
Result 5: 1
Result 6: 1
Result 7: 0
Result 8: -1
Result 9: -1
Result 10: 1
Result 11: -1
Result 12: 1
Result 13: 0

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?