我有一个带有 PHP 文件的主机,它获取请求,从中获取一个字符串并必须提供给 Go (GoLang) 脚本。我该怎么做?
包主 我的 GO 脚本:
package main
import (
"log"
"fmt"
"io/ioutil"
"strings"
ivona "github.com/jpadilla/ivona-go"
)
func main() {
client := ivona.New("GDNAICTDMLSLU5426OAA", "2qUFTF8ZF9wqy7xoGBY+YXLEu+M2Qqalf/pSrd9m")
text, err := ioutil.ReadFile("/Users/Igralino/Desktop/text.txt")
if err != nil {
log.Fatal(err)
}
arrayOfParagraphs := strings.Split(string(text), "\n\n")
i := 0
for _,paragraph := range arrayOfParagraphs {
paragraph = strings.TrimSpace(paragraph)
if (len(paragraph) < 1) { // against empty lines
continue
}
log.Printf("%v\n", paragraph)
options := ivona.NewSpeechOptions(paragraph)
options.Voice.Language = "ru-RU"
options.Voice.Name = "Maxim"
options.Voice.Gender = "Male"
options.OutputFormat.Codec = "MP3"
r, err := client.CreateSpeech(options)
if err != nil {
log.Fatal(err)
}
i++
file := fmt.Sprintf("/Users/Igralino/Desktop/tts%04d.MP3", i) // files like 0001.ogg
ioutil.WriteFile(file, r.Audio, 0644)
}
}
最佳答案
Go 不是脚本语言!这是一个编译的。
编译型语言
A compiled language is a programming language whose implementations are typically compilers (translators that generate machine code from source code), and not interpreters (step-by-step executors of source code, where no pre-runtime translation takes place).
所以“脚本”一词的使用是非常错误的!
如何从其他程序与Go程序通信。
您必须首先构建并安装您的程序。如果您已经准备好并配置了 Go 环境,这很容易:
$go install github.com/user/hello
因为它已安装到操作系统,所以您可以从命令行调用它。
$hello
如果您的程序需要参数,请使用 flag包来声明它。
$hello -name <value>
显然,您可以使用 system
函数或任何可能的方式从 PHP 调用它(我对 PHP 一无所知)。
另一种方法是将您的 Go 程序设计为守护进程,并通过端口等直接与其通信。您的 Go 程序必须持续运行并监听端口。不错answer关于 Go 程序的守护进程。
关于php - 从 PHP 运行 Go 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41385156/