我正在尝试编写一个将两个切片连接在一起的函数。但是无论我尝试什么,它都会返回类似
的内容[1]空[2]空[3]空[4]切片[1]…
我不想有空索引。
package main
import "fmt"
func main() {
var input string
var list1 []string
var list2 []string
list1 = make([]string, 3)
list2 = make([]string, 3)
fmt.Println("Tell me three friends you like.")
for i := 0; i < 3; i++ {
fmt.Print("friend: ")
fmt.Scanf("%s", &input)
list1 = append(list1, input)
}
fmt.Println("tell me three family members you like.")
for i := 0; i < 3; i++ {
fmt.Print("family_member: ")
fmt.Scanf("%s", &input)
list2 = append(list2, input)
}
list := concat(list1, list2)
for i := 0; i < 12; i++ {
fmt.Println(list[i])
}
}
func concat(a []string, b []string) []string {
var list []string
list = make([]string, 6)
list = append(list, a...)
list = append(list, b...)
return list
}
答案 0 :(得分:0)
list1 = make([]string, 3)
list2 = make([]string, 3)
我想这会创建一个最多包含3个索引的切片。但是它将创建两个包含3个空索引的切片。稍后使用append()时,会将其追加到第4个索引。 (使slice的最大索引数为4,当我使该slice的索引最大为3时,这有点使我震惊。因此,上述两行需要更改为:
list1 = make([]string, 0)
list2 = make([]string, 0)
这样,不再有空索引。