这是我参与[第五届青训营]伴学笔记创作活动的第一天。 1.语法与其他语言有些不同,但是基本的语法还是那些。 2.写if时不需要括号,只有for循环,没有while等这些,并且可以用switch,case来充当判断语句,减少代码量 1.用rand.Intn()生成随机数时要注意定义一个随机种子rand.Seed(time),要不然生成的随机数会一直是同一个数 2.使用缓冲区读入输入时,要注意去掉最后的换行符 课后题1,使用fmt.Scanf来处理输入 先定义存的变量,然后将输入语句放置于for循环中,其他没有什么变化 func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNum := rand.Intn(maxNum)
fmt.Println("The secret is", secretNum)
fmt.Println("Please write")
var input string
for {
fmt.Scanf("%s", &input)
guss, err := strconv.Atoi(input)
if err != nil {
continue
}
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
continue
}
fmt.Println("your guss is", guss)
if guss > secretNum {
fmt.Println("1")
} else if guss < secretNum {
fmt.Println("2")
} else {
fmt.Println("3")
break
}
}
}
3 用搜狗翻译进行模拟
1)用Concert curl toGo工具可以将请求转换为go里面调用的形式很方便。
2)用JSON转Golang工具将json转换为golang结构体,方便对请求进行反序列化
3)使用json.Marshal(request)将请求结构体转换为json格式
4)用json.Unmarshal将返回数据转换为结构体格式
问题:不知道为啥具体查询返回不了。
type DictRequest struct {
From string json:"from"
To string json:"to"
Client string json:"client"
Text string json:"text"
UUID string json:"uuid"
Pid string json:"pid"
AddSugg string json:"addSugg"
}
type DictResponse struct {
Zly string json:"zly"
Message string json:"message"
Code int json:"code"
UUID string json:"uuid"
Sugg []Sugg json:"sugg"
Direction string json:"direction"
}
type Sugg struct {
K string json:"k"
V string json:"v"
}
func query(word string) {
client := &http.Client{}
//var data = strings.NewReader(from=auto&to=zh-CHS&client=web&text=good&uuid=4d01a284-9e6e-4aac-bf1c-7e69553dc631&pid=sogou-dict-vr&addSugg=on)
request := DictRequest{From: "auto", To: "zh-CHS", Client: "web", Text: "good", UUID: "4d01a284-9e6e-4aac-bf1c-7e69553dc631", Pid: "sogou-dict-vr", AddSugg: "on"}
buf, err2 := json.Marshal(request)
if err2 != nil {
log.Fatal(err2)
}
var data = bytes.NewReader(buf)
req, err := http.NewRequest("POST", "fanyi.sogou.com/reventondc/…", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Accept", "application/json")
req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6")
req.Header.Set("Connection", "keep-alive")
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("Cookie", "SUID=534648DF8330A40A000000006346D36B; ABTEST=0|1673776188|v17; SNUID=BA102855E2E410AB81C5AD99E2A6FA96; IPLOC=CN1411; wuid=1673776188377; FQV=4ddd7945dd53e5acc2003578f34579bf; translate.sess=202cf3c0-5b0f-4eca-8fd3-dff761e60a88; SUV=1673776188240; SGINPUT_UPSCREEN=1673776188260")
req.Header.Set("Origin", "https://fanyi.sogou.com")
req.Header.Set("Referer", "https://fanyi.sogou.com/text")
req.Header.Set("Sec-Fetch-Dest", "empty")
req.Header.Set("Sec-Fetch-Mode", "cors")
req.Header.Set("Sec-Fetch-Site", "same-origin")
req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.76")
req.Header.Set("sec-ch-ua", `"Not?A_Brand";v="8", "Chromium";v="108", "Microsoft Edge";v="108"`)
req.Header.Set("sec-ch-ua-mobile", "?0")
req.Header.Set("sec-ch-ua-platform", `"Windows"`)
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
if resp.StatusCode != 200 {
log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText))
}
var dictResponse DictResponse
err = json.Unmarshal(bodyText, &dictResponse)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%#v\n", dictResponse)
}
func main() {
if len(os.Args) != 2 {
fmt.Fprintf(os.Stderr, usage: simpleDict WORD example: simpleDict hello )
os.Exit(1)
}
word := os.Args[1]
query(word)
}