Канал может принимать только одну переменную, поэтому вы правы в том, что вам нужно определить структуру для хранения ваших результатов, однако на самом деле вы не используете это для передачи в ваш канал. У вас есть два варианта, либо измените executeCmd
, чтобы получить results
:
func executeCmd(command, port string, hostname string, config *ssh.ClientConfig) results {
...
return results{
target: hostname,
output: strings.Split(stdoutBuf.String(), " "),
}
}
ch <- executeCmd(cmd, port, hostname, config)
Или оставьте executeCmd
как есть и поместите возвращенные значения в структуру после вызова:
func executeCmd(command, port string, hostname string, config *ssh.ClientConfig) (target string, splitOut []string) {
...
return hostname, strings.Split(stdoutBuf.String(), " ")
}
hostname, output := executeCmd(cmd, port, hostname, config)
result := results{
target: hostname,
output: strings.Split(stdoutBuf.String(), " "),
}
ch <- result