go可以直接使用自带的bytes.compare比较两个字节切片的大小,代码如下:
package compare
import (
"bytes"
"testing"
)
// 下面的测试代码是比较常用的表格驱动测试的方式,可以结合mock函数等一起使用
func TestByteSliceCompare(t *testing.T) {
type Args struct {
sliceA []byte
sliceB []byte
}
tests := []struct {
name string
args Args
want int
}{
{
name: "slice a equal b",
args: Args{
sliceA: []byte{1, 2, 3},
sliceB: []byte{1, 2, 3},
},
want: 0,
},
{
name: "slice a less than b",
args: Args{
sliceA: []byte{1, 2, 3},
sliceB: []byte{4, 5, 6},
},
want: -1,
},
{
name: "slice a much more than b",
args: Args{
sliceA: []byte{4, 7, 8},
sliceB: []byte{4, 5, 6},
},
want: 1,
},
}
for _, tt := range tests {
if got := bytes.Compare(tt.args.sliceA, tt.args.sliceB); got != tt.want {
t.Errorf("got not equal to want,name:%s,got:%d,want:%d", tt.name, got, tt.want)
}
}
}
执行结果如下所示:
=== RUN TestByteSliceCompare
--- PASS: TestByteSliceCompare (0.00s)
PASS
ps:另有strings.compare方法可以比较两个字符串大小,如有需要自取
go中bytes包下面有用的方法还是挺多的,比如bytes.Buffer是一个字节缓冲区,提供了许多字节slice操作方法的封装,可以加快处理速度(貌似是这样,以后理解深刻了再补充吧)