[ 后端与 GO基础 | 青训营笔记]

61 阅读3分钟

这是我参与[第五届青训营]伴学笔记创作活动的第一天。 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) }