Изменить структуру из массива строк в глубокий массив - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть следующая структура, которую я создал вручную, например app service runner etc

func Cmr(mPath string) [][]string {
    cav := [][]string{
        {mPath, "app", "app2"},
        {mPath, "service"},
        {mPath, "runner1", "runner2", "runner3"},
    }
    return cav
}

Теперь мне нужно из этого ввода создать эту структуру, я имею в виду вернуть ту же структуру 'cav`

Теперь у меня есть другая функция, которая возвращает array of string имя cmdList каждая строка имеет пробел r между значениями вроде app app2 appN

0 = app app2
1 = service
2 = runner1 runner2 runner3 

Как можноЯ беру вышеупомянутый массив строк и помещаю его в качестве параметра функции Cmr И , удаляя жестко запрограммированное значение и получая их из cmdList вместо жестко запрограммированных их ...

Как

func Cmr(mPath string,cmdList []string) [][]string {
    cav := [][]string{
        {mPath, cmdList[0], "app2"},
        {mPath, "service"},
        {mPath, "runner1", "runner2", "runner3"},
    }
    return cav
}

обновление в конце должно быть что-то вроде этого за исключением я не знаю, как разделить запись cmdList с разделителем пробелов

func Cmr(mPath string, cmdList []string) [][]string {
    cav := [][]string{}

    cav = append(cav, append([]string{mPath}, cmdList[0]))
    cav = append(cav, append([]string{mPath}, cmdList[1]))
    cav = append(cav, append([]string{mPath}, cmdList[2]))

    return cav
}

Это создаст что-то вроде (так как я не обрабатываю разделитель пробелов)

   cav := [][]string{
        {mPath, "app app2"},
        {mPath, "service"},
        {mPath, "runner1 runner2 runner3"},
    }

Но мне нужно

  cav := [][]string{
        {mPath, "app", "app2"},
        {mPath, "service"},
        {mPath, "runner1", "runner2", "runner3"},
    }

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

В целом из того, что я вижу, кажется, что вы должны получать эти строковые фрагменты по аргументу и добавлять их к вашему [][]string.

Вот полный пример, где они передаются функции:

package main

import "fmt"

func Cmr(mPath string, appList, serviceList, runnerList []string) [][]string {
    cav := [][]string{}
    cav = append(cav, append([]string{mPath}, appList...))
    cav = append(cav, append([]string{mPath}, serviceList...))
    cav = append(cav, append([]string{mPath}, runnerList...))

    return cav
}

func main() {
    cmr := Cmr(
        "mpathTestValue",
        []string{"app1", "app2"},
        []string{"service1", "service2"},
        []string{"runner1", "runner2", "runner3"},
    )

    for _, values := range cmr {
        fmt.Println(values)
    }
}

Дает вывод

[mpathTestValue app1 app2]
[mpathTestValue service1 service2]
[mpathTestValue runner1 runner2 runner3]

Вы можете попробовать поиграть с ним самостоятельно здесь

0 голосов
/ 20 сентября 2018

Я полагаю, что вы ищете что-то вроде:

cav = append(cav, strArray)

, где strArray - это массив строк, которые вы получили от cmdList()

РЕДАКТИРОВАТЬ: это закончилось тем, что они искали: https://play.golang.org/p/ZFFhRRu43Em

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...