Просмотр исходного кода

修复代码bug--> exercises/chapter_7/remove_slice.go (#433)

* 修复代码bug, 切片取值错误导致结果偏差,丢失最后一个元素,优化创建切片的容量,避免每次自动扩容1个大小

* 使用切片完成操作
Allen.Guo 8 лет назад
Родитель
Сommit
695188fe0d
2 измененных файлов с 17 добавлено и 14 удалено
  1. 2 2
      eBook/exercises/chapter_7/remove_slice.go
  2. 15 12
      eBook/exercises/chapter_7/split_string.go

+ 2 - 2
eBook/exercises/chapter_7/remove_slice.go

@@ -12,8 +12,8 @@ func main() {
 }
 
 func RemoveStringSlice(slice []string, start, end int) []string {
-	result := make([]string, len(slice)-(end-start))
+	result := make([]string, len(slice)-(end-start)-1)
 	at := copy(result, slice[:start])
-	copy(result[at:], slice[end:])
+	copy(result[at:], slice[end+1:])
 	return result
 }

+ 15 - 12
eBook/exercises/chapter_7/split_string.go

@@ -1,16 +1,19 @@
 package main
 
-import "fmt"
+import (
+        "fmt"
+    )
 
-func main() {
-	str := "Google"
-	for i := 0; i <= len(str); i++ {
-		a, b := Split(str, i)
-		fmt.Printf("The string %s split at position %d is: %s / %s\n", str, i, a, b)
-	}
+    func main() {
+            rawString := "Google"
+                index := 3
+                    sp1, sp2 := splitStringbyIndex(rawString, index)
+                        fmt.Printf("The string %s split at position %d is: %s / %s\n", rawString, index, sp1, sp2)
+                    }
 
-}
-
-func Split(s string, pos int) (string, string) {
-	return s[0:pos], s[pos:]
-}
+                    func splitStringbyIndex(str string, i int) (sp1, sp2 string) {
+                            rawStrSlice := []byte(str)
+                                sp1 = string(rawStrSlice[:i])
+                                    sp2 = string(rawStrSlice[i:])
+                                        return
+                                    }