所以计划是要有一个字符串,如" a"在切片中,一旦变成" a100"例如,然后停止运行一个for循环,它将数字添加到它的末尾。当我尝试下面的代码时,它说"(不匹配的类型[]字符串和字符串)",这是因为我必须将切片转换为字符串?如果是这样,我该怎么做?感谢。
package main
import "fmt"
func main() {
var s []string
s = append(s, "a")
fmt.Println(s)
for i := 0; i <= 1000; i++ {
s = append(s, i)
if s == "a10" {
fmt.Println("Worked", s)
} else {
fmt.Println(s)
}
}
}
答案 0 :(得分:1)
您可以执行以下操作将[]string
转换为字符串`:
import "strings"
//...
if strings.Join(s, "") == "a10" {
fmt.Println("Worked", s)
} else {
fmt.Println(s)
}
您还需要将i
(一个int)转换为string
,很可能您会使用strconv.Itoa
。最后,您的代码看起来像这样:https://play.golang.org/p/gD5b5XFimJ
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
var s []string
s = append(s, "a")
fmt.Println(s)
for i := 0; i <= 1000; i++ {
s = append(s, strconv.Itoa(i))
if strings.Join(s, "") == "a01" {
fmt.Println("Worked", s)
return
} else {
fmt.Println(s)
}
}
}
虽然,您也可以不使用数组并直接附加到字符串(或[]字节)...
package main
import (
"fmt"
"strconv"
)
func main() {
var s := "a"
fmt.Println(s)
for i := 0; i <= 1000; i++ {
s += strconv.Itoa(i)
if s == "a01" {
fmt.Println("Worked", s)
return
} else {
fmt.Println(s)
}
}
}
要每次重置数组,只需制作主方法:
for i := 0; i <= 1000; i++ {
s := []string{"a"}
s = append(s, strconv.Itoa(i))
if strings.Join(s, "") == "a10" {
fmt.Println("Worked", s)
return
} else {
fmt.Println(s)
}
}