Как проверить, равен ли добавленный фрагмент строке?
Таким образом, план состоит в том, чтобы в срезе была строка, такая как "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)
}
}
}
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)
}
}
}
Чтобы сбросить массив каждый раз, просто сделайте метод main:
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)
}
}