这是我参与「第五届青训营 」伴学笔记创作活动的第1天
Go语言入门快速,具有以下特点
1高性能、高并发
2语法简单、学习曲线平缓
3丰富的标准库
4完善的工具链
5静态链接
6快速编译
7跨平台
8垃圾回收
GO基础语法
与其他语言相比
可以用+拼接字符串
g := a + "foo"
复制代码
if语句没有()
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd") }
复制代码
go中只有for循环
for { fmt.Println("loop") break }
复制代码
switch 不需要加break 也可以根据条件直接判断 代替ifelse
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
复制代码
指针主要用于修改参数值
func add2ptr(n *int) {
*n += 2
}
复制代码
结构体方法 把(u *user)放到函数签名,可以通过对象.调用方法
func (u *user) resetPassword(password string) {
u.password = password
}
func main() {
a := user{name: "wang", password: "1024"}
a.resetPassword("2048")
fmt.Println(a.checkPassword("2048")) // true
}
复制代码
Printf中%v可以全格式打印,+v输出更多信息
fmt.Printf("p=%v\n", p) // p={1 2}
fmt.Printf("p=%+v\n", p) // p={x:1 y:2}
fmt.Printf("p=%#v\n", p) // p=main.point{x:1, y:2}
复制代码
使用json.MarshalIndent把json转为2进制
buf, err = json.MarshalIndent(a, "", "\t")
复制代码
Atoi字符串转数字ItoA数字转字符串
n2, _ := strconv.Atoi("123") n3 := strconv.Itoa(666)
复制代码
GO实战案例
猜谜游戏主要是熟悉语法的
作业中用Scanf来简化我选择把Scanf放到for循环第一行,但是会出现第二次进入循环时跳过Scanf语句,查资料后发现 Scanf读取了在缓冲区中仍存在上一次输入留下的换行符,于是加入\n解决问题
[原文链接]( Golang——Scanf,Scanln循环多次输入的小坑_golang scanf_多喝氧烷_的博客-CSDN博客)
fmt.Scanf("%s", &input) //第二次读取跳过scanf
fmt.Scanf("%s\n", &input)
字典案例比较有趣,使用两个在线工具把curl转换为go代码,把JSON转换为go结构体,链接如下
1Convert curl commands to Go (curlconverter.com) 2JSON转Golang Struct - 在线工具 - OKTools
最终完成字典的实现
SOCKS5代理案例帮助我了解go中的网络编程,了解代理协议的流程,增加了知识储备