文件夹目录
split_string/split.go
split_string/split_test.go
运行测试函数
package split_string import ( "reflect" "testing" ) // 单元测试代码可以和测试代码放到一起,用同样的包名 // 以测试代码名开头,以 _test.go 结尾哦 // 测试用例函数名必须以Test开头,必须接收一个*testing.T类型参数 // 在终端输入 go test 运行 go test -v 获得更多信息 func TestSplit(t *testing.T) { got := Split("babcbef", "b") //程序输出结果,以冒号分隔 want := []string{"", "a", "c", "ef"} //期望结果 //reflect 反射,DeepEqual深度相等 //slice 不能直接比较,借助反射包中的方法比较 if !reflect.DeepEqual(got, want) { //测试用例失败了!!! t.Errorf("want:%v but got:%v\n", want, got) } } func Test2Split(t *testing.T) { got := Split("a:b:c", ":") //程序输出结果,以冒号分隔 want := []string{"a", "b", "cc"} //期望结果 //reflect 反射,DeepEqual深度相等 //slice 不能直接比较,借助反射包中的方法比较 if !reflect.DeepEqual(got, want) { //测试用例失败了!!! t.Errorf("want:%v but got:%v\n", want, got) } }
调用函数
package split_string import ( "strings" ) //切割字符串 func Split(str string, sep string) []string { //str:"babcbef" sep="b" 结果[a cdef] var ret []string index := strings.Index(str, sep) //找到 sep 下标 for index >= 0 { ret = append(ret, str[:index]) //前面一段追加 ret str = str[index+1:] //后面一段赋值 str index = strings.Index(str, sep) //继续找下标切,如果还含有,for循环 } ret = append(ret, str) return ret }
原文:https://www.cnblogs.com/shijieziben/p/14322137.html