这是我参与「第五届青训营 」笔记创作活动的第1天~
定义
1.高性能,高并发 2.语法简单,类似于C语言 3.丰富的标准库
4.完整的工具链
5.静态链接,只需要一个可执行文件就可以直接运行
6.快速编译
7.跨平台,交叉编译环境无需配置
8.垃圾回收,不要关注内存的回收问题
环境配置与测试
- 访问 go.dev/ ,点击 Download ,下载对应平台安装包,安装即可
- 在VScode中选择Go并进行安装
- 下载github.com/wangkechun/… 测试代码后,在Terminal处运行main.go,存在如下问题,通过[该方式]((186条消息) 解决:go : 无法将“go”项识别为 cmdlet、函数、脚本文件或可运行程序的名称_无法将go识别为_furhacker的博客-CSDN博客)解决后,成功输出hello world。
语法
go的语法基本上同C/C++。
1.var代表变量,const代表常量,两者都可以不必具体声明其类型,而可以在运行过程中自动推导。
var a = "initial" //自动推导变量的类型
var b, c int = 1, 2
var d = true
var e float64
f := float32(e) //声明变量的方式
g := a + "foo" //字符串内置类型,直接用'+'号来拼接
fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0
fmt.Println(g) // initialapple
const s string = "constant" //常量,同时没有确定的类型
const h = 500000000
const i = 3e20 / h
2.循环for,和C的循环不同之处在于不要写括号
i := 1
for {
fmt.Println("loop")
break
}
for j := 7; j < 9; j++ {
fmt.Println(j)
}
for n := 0; n < 5; n++ {
if n%2 == 0 {
continue
}
fmt.Println(n)
}
for i <= 3 {
fmt.Println(i)
i = i + 1
}
3.if同for,较C无括号,且无论分支有几行代码,都必须加上大括号
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
if 8%4 == 0 {
fmt.Println("8 is divisible by 4")
}
if num := 9; num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
4.switch 无需break,在匹配一个条件分支后直接跳出来 5.数组 6.切片 可变长度的数组 (186条消息) Go的json解析:Marshal与Unmarshal_滢光点点的博客-CSDN博客_go json.marshal
示例
简易字典
进入彩云翻译网站,右击->检查->网络->translator->标头,获取发送的http报文信息
点击负载,观察到待翻译的词语为good,翻译类型为自动到中文
在translator处右击选择复制
得到如下所示的内容
使用如下方式将curl转化为go
2.从response中提取信息并显示出来 思路:将返回的json串反序列化为一个结构体,该结构体使用oktools.net/json2go 进行辅助转化。
type DictResponse struct {
Rc int json:"rc"
Wiki struct {
KnownInLaguages int json:"known_in_laguages"
Description struct {
Source string json:"source"
Target interface{} json:"target"
} json:"description"
ID string json:"id"
Item struct {
Source string json:"source"
Target string json:"target"
} json:"item"
ImageURL string json:"image_url"
IsSubject string json:"is_subject"
Sitelink string json:"sitelink"
} json:"wiki"
Dictionary struct {
Prons struct {
EnUs string json:"en-us"
En string json:"en"
} json:"prons"
Explanations []string json:"explanations"
Synonym []string json:"synonym"
Antonym []string json:"antonym"
WqxExample [][]string json:"wqx_example"
Entry string json:"entry"
Type string json:"type"
Related []interface{} json:"related"
Source string json:"source"
} json:"dictionary"
}
1.握手/协商三个阶段 (1)协议版本号,认证方式等等 (1.1)返回挑选的认证方式 2.认证阶段 3.请求阶段 connect请求,代理和后端服务器建立连接 4.relay阶段 由代理服务器代理客户和主机之间的交流
完成echo服务器时,出现如下所示的问题导致无法测试
powershell提示无法将“”项识别 - 大耳朵小虎 - 博客园 (cnblogs.com)
附: Go 语言学习路线图 - 飞书云文档 (feishu.cn)