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()
}
在我的代码中,它没有检查。我使用了两个不同的字符串数组来比较每个字符。
答案 0 :(得分:2)
i
和j
的长度为test
和ans
。因此,它们不是test[i][j]
或ans[i][j]
的有效索引。
您只需使用reflect.DeepEqual()。
您可以为多维切片扩展this solution。
一个简单的例子:
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
}
答案 1 :(得分:0)
import "github.com/google/go-cmp/cmp"
包cmp确定值的相等性。
此软件包旨在成为更强大,更安全的替代方案 to reflect.DeepEqual用于比较两个值是否在语义上 相等。
使用包cmp
。