使用golang怎么判断块是否相等

  介绍

这期内容当中小编将会给大家带来有关使用golang怎么判断块是否相等,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

片相等的定义

我们选择最常见的需求,也就是当两个切片的类型和长度相同,且相等下标的值也是相等的,比如:

a :=, int [] {1,, 2,, 3} b :=, int [] {1,, 2,, 3} c :=, int [] {1,, 2} d :=, int [] {1,, 3,, 2}

上述代码中<代码> 和<代码> b> c> 不同所以不相等,<代码> d 因为元素的排列顺序和<代码> 不同所以也不相等。

判断两个[]字节是否相等

为什么要单独将[]字节列举出来呢?

因为标准库提供了优化的比较方案,不再需要我们造轮子了:

package  mainimport  (   ,,,“bytes"   ,,,“fmt") func 主要(),{   ,,,a :=,[]字节{0,,1,,3,,2}   ,,,b :=,[]字节{0,,1,,3,,2}   ,,,c :=,[]字节{1,,1,,3,,2}      ,,,fmt.Println (bytes.Equal (a, b))   ,,,fmt.Println (bytes.Equal (a, c))}

使用反映判断块(数组)是否相等

在判断类型不是[]字节的块时,我们还可以借助<代码>反映。DeepEqual> func  DeepEqual (x), y 界面{}),bool

DeepEqual报告是否x和y是“深度相同的情况下,”定义如下。两个值相同的类型非常平等如果> package  mainimport  (   ,,,“fmt"   ,,,“reflect") func 主要(),{   ,,,a :=, int [] {1,, 2,, 3,, 4}   ,,,b :=, int [] {1,, 3,, 2,, 4}   ,,,c :=, int [] {1,, 2,, 3,, 4}   ,,,fmt.Println (reflect.DeepEqual (a, b))   ,,,fmt.Println (reflect.DeepEqual (a, c))}

手写判断

在golang中使用反映通常需要付出性能代价,如果我们确定了切片的类型,那么自己实现切的相等判断相对来说也不是那么麻烦:

func  testEq (a, b  int []), bool  {   ,,,//,If  one  is  nil,,, other  must  also  be 零。   ,,,if  (a ==, nil), !=, (b ==, nil), {   ,,,,,,,return 假;   ,,,}      ,,,if  len (a), !=, len (b), {   ,,,,,,,return 错误的   ,,,}      ,,,for 小姐::=,range  a  {   ,,,,,,,if [我],!=,b[我],{   ,,,,,,,,,,,return 错误的   ,,,,,,,}   ,,,}      ,,,return 真正}

测试代码:

package  main  import “fmt", func 主要(),{,,,a :=, int [] {1,, 2,, 3,, 4},,,, b :=, int [] {1,, 3,, 2,, 4},,,, c :=, int [] {1,, 2,, 3,, 4},,,, fmt.Println (testEq (a, b)),,,, fmt.Println (testEq (a, c))}

上述就是小编为大家分享的使用golang怎么判断块是否相等了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

使用golang怎么判断块是否相等