Как string разделить пустую строку в Go

в Python, если я это сделаю...:

parts = "".split(",")
print parts, len(parts)

выход:

[], 0

если я сделаю эквивалент в Go...:

parts = strings.Split("", ",")        
fmt.Println(parts, len(parts))

выход:

[], 1

как он может иметь длину 1, если там ничего нет?

1 ответов


результат strings.Split - это срез с одним элементом-пустой строкой.

fmt.Println просто не отображает его. Попробуйте этот пример (обратите внимание на изменение последней печати).

package main

import "fmt"
import "strings"

func main() {
    groups := strings.Split("one,two", ",")
    fmt.Println(groups, len(groups))
    groups = strings.Split("one", ",")
    fmt.Println(groups, len(groups))
    groups = strings.Split("", ",")
    fmt.Printf("%q, %d\n", groups, len(groups))
}

площадка ссылке

это имеет смысл. Если вы хотите разделить строку "HelloWorld" С помощью , символ в качестве разделителя, вы ожидаете, что результат будет "HelloWorld" - то же самое, что и ваш вход.