"нельзя использовать в качестве строки типа в присваивании" - PullRequest
0 голосов
/ 03 октября 2018

У меня есть следующая строка:

-1,856,32,0,0,0.000000,0.000000
0,0,0,137,0,0,0,140
0,0,101,0,0,0,42,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,554,0
-1,841,1,0,0,0.000000,0.000000
0,0,0,163,0,0,0,182
0,0,120,0,0,0,43,0
0,0,0,0,0,0,0,0
0,0,0,0,0,0,517,0

, затем я разделяю ее с помощью разделителя -1, что означает, что будет массив, состоящий из 2 элементов (назовем его array1).скажем, по первому элементу array1 я хочу снова разделить его на \r\n, который будет массивом (array2), состоящим из 5 элементов.затем я хочу разделить первый элемент array2, используя , в качестве разделителя, но это дает мне предупреждение:

cannot use strings.Split(d0, ",") (type []string) as type string in assignment

вот код:

array1 := strings.Split(string(b), "-1,")
for k, chunk := range chunks{
    // skip the first
    // because it's blank
    // duno why
    if k == 0{
        continue
    }

    array2 := strings.Split(chunk, "\r\n")

    d0 := data[0]
    d0 = strings.Split(d0, ",") // this give me error: cannot use strings.Split(d0, ",") (type []string) as type string in assignment
    lat, lng := d0[4], d0[5]
    // 
    //  TODO: match lat and lng againts lamp table in DB which is now in $coords
    //  
    fmt.Println(lat, lng)

    data = data[1:]
    for _, v := range data{
        _ = v
    }
}

1 Ответ

0 голосов
/ 03 октября 2018

Ответ на ваш вопрос содержится в сообщении об ошибке, которое вы отметили:

не может использовать строки. Split (d0, ",") (type [] string) в качестве строки типа в присваивании

Причина в том, что вы объявляете d0 как имеющий тип "string", а затем пытаетесь присвоить ему slice строк.Так как это разные типы, компилятор генерирует указанную вами ошибку и отказывается компилировать вашу программу.

d0 := data[0] // Here we declare d0 as a string and assign a value to it
d0 = strings.Split(d0, ",") // ERROR: "Split" returns a []string but d0 is a string!

Чтобы обойти это, вам нужно просто объявить новую переменную, представляющую собой фрагмент строки, вместо того, чтобы пытаться повторно использоватьимя d0:

d0 := data[0] // Define d0 as a string
ss := strings.Split(d0, ",") // OK: Define ss as a []string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...