Go语言工程实践
实践二
修改词典中的最终代码,增加一种新的翻译引擎支持
经过实践,仅实现了百度翻译和搜狗翻译的效果,其他在线翻译均在找负载和预览步骤或json请求翻车
实现思路
要实现在Go语言中调用百度翻译,首先,要在网页版的百度翻译界面右键打开检查,并打开最上方的网页版的百度翻译界面右键打开检查,并打开最上方的网络界面,此时在百度翻译的翻译框内输入hello,可以看到左侧出现大量项目,从下往上寻找sug。找到sug之后,对其鼠标右键,找到复制,windows选择复制为cURL(bash),我们便可得到一大串Json,之后我们需要用到工具Covert curl to Go(curlconverter.com),该网站可以将我们复制到的Json转化为我们需要的请求形式。然后复制代码并粘贴到编译器内,尝试运行。而我们无需创建结构体,需使用代码来实现负载并修改main函数的请求部分。接下来生成DictResponse,我们需要用到工具JSON转Golang Struct-在线工具-OKTools,在sug中选择预览,并对第一项复制值,粘贴到工具中,并选择嵌套,我们便得到了需要的结构体,免去了制定复杂结构体的过程,将其粘贴到代码中并将名称改为 DictResponse。最后我们将要对打印的结果进行处理,我们要将原来的main函数修改为query函数,并且设置打印路径,再创建新的main函数来调用query函数。
最终实现
多次尝试以及查找资料后发现,需要在翻译框内输入查找内容后再输入一个空格并删掉空格才会出现正确的sug。
package main
import (
"fmt"
"io"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`kw=hello`)
req, err := http.NewRequest("POST", "https://fanyi.baidu.com/sug", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Accept", "application/json, text/javascript, */*; q=0.01")
var data = strings.NewReader(`kw=hello`)
var s1 string = "kw=wink"
var data = strings.NewReader(s1)
client := &http.Client{}
var inport string = "kw="
inport += word
var data = strings.NewReader(inport)
req, err := http.NewRequest("POST", "https://fanyi.baidu.com/sug", data)
if err != nil {
log.Fatal(err)
//func main()
func query(word string)
fmt.Printf("translate:\n\t")
for i, item := range dictResponse.Data[0].V {
if item == 'n' && i > 0 && dictResponse.Data[0].V[i-1] == ' ' || item == 'v' {
fmt.Printf("\n\t")
}
fmt.Printf("%c", item)
}
fmt.Println()
func main() {
var word string
fmt.Scanln(&word)
for word != "EOF" {
query(word)
fmt.Scanln(&word)
}
fmt.Println("over")
}
总结
以上是我通过对Day2在Go语言进阶与依赖管理的学习进行的第二个实践内容,在实践过程中可能的确不太顺利,但也是在一步步实现中不断进取,是一个十分具有意义的宝贵过程。而此篇实践文章是我最后一篇青训营笔记,同时青训营活动也拉下帷幕。此次活动收获颇多,感触颇深,通过这几日对课程的学习,是对知识的深入,对技术的提高,也是对多次实践下来失败经验的汲取,相信这次的青训营生活对日后的学习上有极大的帮助。