Arrays 如何比较golang中的两个[][]字符串数组 func assertEq(测试[][]字符串,ans[][]字符串){ 对于i:=0;i
在我的代码中,它不是检查。我使用了两个不同的字符串数组来比较每个字符。Arrays 如何比较golang中的两个[][]字符串数组 func assertEq(测试[][]字符串,ans[][]字符串){ 对于i:=0;i,arrays,string,go,Arrays,String,Go,在我的代码中,它不是检查。我使用了两个不同的字符串数组来比较每个字符。I和j是test和ans的长度。因此,它们不是test[i][j]或ans[i][j]的有效索引 你可以简单地使用 可以扩展多个维度切片 一个简单的例子: func assertEq(test [][]string, ans [][]string) { for i := 0; i < len(test); i++ { for j := 0; j < len(ans); j++ {
I
和j
是test
和ans
的长度。因此,它们不是test[i][j]
或ans[i][j]
的有效索引
你可以简单地使用
可以扩展多个维度切片
一个简单的例子:
func assertEq(test [][]string, ans [][]string) {
for i := 0; i < len(test); i++ {
for j := 0; j < len(ans); j++ {
if test[i][j] != ans[i][j] {
fmt.Print(test)
fmt.Print(" ! ")
fmt.Print(ans)
}
}
}
fmt.Println()
}
包cmp确定值的相等性
该软件包旨在成为更强大、更安全的替代方案
用于比较两个值在语义上是否相等
平等
使用package
cmp
您是否尝试了reflect.DeepEqual
?请注意[]字符串
不是数组。这是一个切片。您已经编写了比较切片的代码。到底是什么问题(除了缺少边界检查)。为了获得更好的性能,请在检查所有元素是否相等之前检查切片长度是否相等。如果性能不是一个问题,您可以按照@alexefimove的建议使用DeepEqual
package main
import (
"fmt"
"reflect"
)
func assertEq(test [][]string, ans [][]string) bool {
return reflect.DeepEqual(test, ans)
}
func main() {
str1 := [][]string{{"1", "2", "3"}, {"1", "2", "3"}, {"1", "2", "3"}}
str2 := [][]string{{"1", "2", "3"}, {"1", "2", "3"}, {"1", "2", "3"}}
str3 := [][]string{{"1", "2", "3"}, {"1", "2", "3"}, {"1", "2"}}
fmt.Println(assertEq(str1, str2)) // answer is true
fmt.Println(assertEq(str1, str3)) // answer is false
}
import "github.com/google/go-cmp/cmp"