# Go – bytes.Compare() function in go

bytes.Compare() function is used to compare two byte slices lexicographically in go and returns integer value.

bytes.Compare() function returns 0 if two byte slices are equal (a == b), -1 if first byte slice is less than second byte slice (a < b) and 1 if first byte slice is greater than second byte slice (a > b).

If the byte slices are empty then It will return nil.

### bytes.Compare() function prototype:

```func Compare(a, b []byte) int

or

func Compare(a []byte, b []byte) int

Input parameters:
a: First byte slice
b: Second byte slice

Here, type byte = uint8```

### bytes.Compare() function return value:

`bytes.Compare() function compares each byte in two slices. If It find out that if first byte is greater than second byte then It returns 1 and if first byte is less than second byte then returns -1 and 0 If both the bytes are equal.`

### Explanation:

```1)
a := []byte("abc")
b := []byte("abc")

bytes.Compare(a, b) will return 0. Since both the byte slices are equal.

2)
first_byte_slice := []byte("xyz")
second_byte_slice := []byte("abc")

bytes.Compare(a, b) will return 1. Since 'x' in first_byte_slice is greater than 'a' in second_byte_slice.

3)
first_byte_slice := []byte("abc")
second_byte_slice := []byte("xyz")

bytes.Compare(a, b) will return -1. Since 'a' in first_byte_slice is less than 'x' in second_byte_slice.

4)
first_byte_slice := []byte("abcd")
second_byte_slice := []byte("abzd")

bytes.Compare(a, b) will return -1. Since 'c' in first_byte_slice is less than 'z' in second_byte_slice.```

Example:

Code 1:

```package main

import (
"fmt"
"bytes"
)

func main() {

// Both the slices are equal
fmt.Print("Both the slices are equal: ")
byte_1 := []byte("abc")
byte_2 := []byte("abc")

fmt.Println(bytes.Compare(byte_1, byte_2))

// First byte slice is greater than second byte slice
fmt.Print("1st byte slices is greater than 2nd byte slice: ")
byte_1 = []byte("xyz")
byte_2 = []byte("abc")

fmt.Println(bytes.Compare(byte_1, byte_2))

// First byte slice is less than second byte slice
fmt.Print("1st byte slices is less than 2nd byte slice: ")
byte_1 = []byte("abc")
byte_2 = []byte("xyz")

fmt.Println(bytes.Compare(byte_1, byte_2))

}```

Output:

```Both the slices are equal: 0
1st byte slices is greater than 2nd byte slice: 1
1st byte slices is less than 2nd byte slice: -1```

Code 2:

```package main

import (
"fmt"
"bytes"
)

func main() {

// Both the slices are equal
fmt.Print("Both the slices are equal: ")
byte_1 := []byte{10, 20, 30}
byte_2 := []byte{10, 20, 30}

fmt.Println(bytes.Compare(byte_1, byte_2))

// First byte slice is greater than second byte slice
fmt.Print("1st byte slices is greater than 2nd byte slice: ")
byte_1 = []byte{10, 20, 30}
byte_2 = []byte{1, 20, 30}

fmt.Println(bytes.Compare(byte_1, byte_2))

// First byte slice is less than second byte slice
fmt.Print("1st byte slices is less than 2nd byte slice: ")
byte_1 = []byte{10, 20, 30}
byte_2 = []byte{10, 30, 30}

fmt.Println(bytes.Compare(byte_1, byte_2))

}```

Output:

```Both the slices are equal: 0
1st byte slices is greater than 2nd byte slice: 1
1st byte slices is less than 2nd byte slice: -1```