这是我参与「第五届青训营 」伴学笔记创作活动的第 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请求
这是一个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,