Chamando a função Python do Go e obtendo o valor de retorno da função

Eu estou escrevendo umVai programa. A partir deste programa Go, eu gostaria de chamar uma função Python definida em outro arquivo e receber o valor de retorno da função para que eu possa usá-lo no processamento subseqüente no meu programa Go. No entanto, estou tendo problemas para recuperar todos os dados retornados no meu programa Go. Abaixo está um exemplo mínimo do que pensei que funcionaria, mas aparentemente não:

gofile.go

package main

import "os/exec"
import "fmt"

func main() {
     fmt.Println("here we go...")
     program := "python"
     arg0 := "-c"
     arg1 := fmt.Sprintf("'import pythonfile; print pythonfile.cat_strings(\"%s\", \"%s\")'", "foo", "bar")
     cmd := exec.Command(program, arg0, arg1)
     fmt.Println("command args:", cmd.Args)
     out, err := cmd.CombinedOutput()
     if err != nil {
         fmt.Println("Concatenation failed with error:", err.Error())
     return
     }
     fmt.Println("concatentation length: ", len(out))
     fmt.Println("concatenation: ", string(out))
     fmt.Println("...done")
}

pythonfile.py

def cat_strings(a, b):
    return a + b

Se eu ligargo run gofile Eu recebo a seguinte saída:

here we go...
command args: [python -c 'import pythonfile; print pythonfile.cat_strings("foo", "bar")']
concatentation length:  0
concatenation:  
...done

Algumas notas:

Estou usando o-c sinalizar na invocação do Python para que eu possa chamar a funçãocat_strings diretamente. Assumircat_strings faz parte de um arquivo Python cheio de funções utilitárias que são usadas por outros programas Python, por isso eu não tenhoif __name__ == __main__ o negócio.Eu não quero modificar o arquivo Python paraprint a + b (ao invés dereturn a + b); Veja o ponto anterior sobre a função sendo parte de um conjunto de funções de utilidade que deveria ser chamado por outro código Python.ocat_strings a função é fictícia e para fins de demonstração; a função real é algo que não quero simplesmente reimplementar no Go. Eu realmente estou interessado em como posso chamar uma função Python do Go e obter o valor de retorno.

questionAnswers(1)

yourAnswerToTheQuestion