后端基础 | 青训营笔记

49 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

Go基础

为什么使用Go语言

1.最初使用的Python,由于性能问题换成了Go
2. C++ 不太适合在线Web业务
3.早期团队非Java背景
4.性能比较好
5. 部署简单、学习成本低
6.内部RPC和HTTP框架的推广

Hello Word 入门

package main

import (
	"fmt"
)

func main() {
	fmt.Println("hello world")
}

实践一:猜字谜

rand.Seed(time.Now().UnixNano())

range生成随机数必须提前设定随机数种子,否则会重复输出一个数字

for {
		input, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("An error occured while reading input. Please try again", err)
			continue
		}
		input = strings.Trim(input, "\r\n")

		guess, err := strconv.Atoi(input)
		if err != nil {
			fmt.Println("Invalid input. Please enter an integer value")
			continue
		}
		fmt.Println("You guess is", guess)
		if guess > secretNumber {
			fmt.Println("Your guess is bigger than the secret number. Please try again")
		} else if guess < secretNumber {
			fmt.Println("Your guess is smaller than the secret number. Please try again")
		} else {
			fmt.Println("Correct, you Legend!")
			break
		}
	}

实践二:在线字典

重点:
1: go语言来来发送HTTP请求

image.png 这是一个HTTP的post的请求,请求的header的相当的复杂,有十来个。然后请求头是一个json里面有两个字段,一个是代表你要你是从什么语言转化成什么语言,source 就是你要查询的单词。API 的返回结果里面会有Wiki和dictionary两个字段。我们需要用的结果主要在dictionary.Explanations字段 里面。其他有些字段里面还包括音标等信息。

2: go语言解析json
定义一个结构体会是这样子的,包含三个字段。

type DictRequest struct {
	TransType string `json:"trans_type"`
	Source    string `json:"source"`
	UserID    string `json:"user_id"`
}

再来定义一个变量,初始化每个结构体成员,再调用JSON.marshaler来得到这个序列化之后的字符串。 不同于之前这里是个字符串,我们这里是个字节数组。所以把strigs.newReader改成bytes点new ready然后来构造那个request上的body接下来代码不变。然后我们就能成功地进入-个变量来发送HTTP请求。

3: 如何使用代码生成来提高开发效率。
代码生成网址:curlconverter.com/#go
JSON转结构体生成网址:oktools.net/json2go
右键浏览器里面的copy as curl,粘贴至终端,会返回一大串ison,