请教复杂的文件比对问题
大家好 像这种简单的字符串比对我会编写
func TestSplit(t *testing.T) {
got := strings.Split("a:b:c", ":")
want := []string{"a", "b", "c"};
if !reflect.DeepEqual(got, want) { /* ... */ }
}
var a, b []string = nil, []string{}
fmt.Println(reflect.DeepEqual(a, b)) // "false"
var c, d map[string]int = nil, make(map[string]int)
fmt.Println(reflect.DeepEqual(c, d)) // "false"
请问如何编写载入一个文件名a.txt, a文件名内有200万行,每一行有0~9加英文大小写混合组成的33字或34个字字符串,跟另一个文件名b.txt, b文件名内有300万行,每一行有0~9加英文大小写混何组成的33字或34个字字符串,b文件跟a文件比较,只要b文件中其中有一行字符串跟a文件中其中有一行字符串完全一样就在终端机输出显示,如果沒有完全一樣的就不顯示,比对完自动载入下一个文件进行比对,以此类推
在此先感谢能教我如何编写的大神
方法一(最优)
借助数据库,添加一张表,比如表名file1,再添加一列比如line,在列上添加唯一索引。从文件中读取每一行,插入到表中,如果插入失败,说明是重复的,因为列有唯一索引。
方法二(耗时少,内存占用大)
假设内存足够大,可以用go,map类型存储每一行,定义map类型为 map[string]bool,就可以了。
方法三(空间占用小,但是耗时)
遍历文件,每一行做对比,伪代码如下: