该文章,是针对12(Go语言基础语法),13日(Go语言工程实践)学习内容进行的阶段性总结,通过问题进行自测,以及加强对相关概念的理解。
首先,关于Go语言的最基本的知识?
- Go语言的结构是什么样?
- Golang是强类型语言吗?他有哪些常用的数据类型?
- Golang中if-else语句的用法?与C/C++有什么不同?
- Go语言如何实现循环?怎么写死循环?
- Go语言的switch语句怎么用,它有什么特点?是否需要“break”?
- Golang如何创建一个数组?如何获取数组长度?
- Golang中make如何使用?如何追加元素?
- map的使用?以下代码的输出?
m:=make(map[string]int)
m["one"]=1
r, ok=m["unknow"]
fmt.Prinln(r,ok)
9.range在for不同数目参数的情况下如何发挥作用?例如
m:=map[string]string{"a":"A","b":"B"}
for k,v := range m{
fmt.Println(k,v)
}
10.golang中指针的用法?“*”?"&"?
11.如何创建一个结构体?怎么进行赋值?支持单个属性赋值吗?
12.如何定义一个结构体方法?
13.错误处理/errors模块怎么用?nil表示什么?
14.分别联想以下各语句的返回结果?
a:="hello"
string.Contains(a,"ll")
string.Count(a,"l")
string.HasPrefix(a,"he")
string.HasSuffix(a,"llo")
string.index(a,"ll")
string.Join([]string{"he","llo"},"-")
string.Repeat(a,2)
string.Replace(a,"e","E",-1)
string.Split("a-b-c","-")
15."%v""%+v""%*v"分别是用来干什么的
16.如何进行json的序列化和反序列化?
17.如何将字符串转换为数字?解释ParseInt和Atoi的区别
接下来,梳理一下从三个案例中我们学到了什么?
猜数字游戏:
在生成随机数时需要用到以下方法初始化随机种子:
rand.Seed(time.Now().UnixNano())
这么做的理由是在 Golang 中,rand 是一个伪随机数生成器。这意味着,每次程序运行时,rand 生成的随机数序列是相同的。如果你不使用 rand.Seed() 来设置随机数种子,那么你每次运行程序得到的随机数序列都是相同的。
为了让每次程序运行时得到的随机数序列都不同,我们可以使用 rand.Seed() 方法来设置随机数种子。Seed() 方法接受一个 int64 类型的参数,这个参数表示随机数种子。通过给 Seed() 提供一个不同的随机数种子,我们就可以获得一个不同的随机数序列。
在上面的示例代码中,我们使用 time.Now().UnixNano() 来获取当前时间的纳秒数,并将其作为参数传递给 rand.Seed()。这样做的效果是,每次程序运行时,都会使用不同的随机数种子,从而得到不同的随机数序列。
读取用户输入
reader := bufio.NewReader(os.Stdin)
//更简便的方法可以使用fmt.Scanf
在线翻译词典:
提到两个网站
CurlConverter将Curl转成能发起请求的go语言
JSON转Go 将json转成golang的结构体形式
以及json.Marshal和json.UnMarshal的具体用法
Socks5代理
Socks5的工作原理
三个阶段各如何实现
请求报文的格式
如何存取收到的报文
关于语言进阶
1.并发与并行?
2.线程与协程?
3.什么是通道?分为哪两种类型?如何实现?
4.defer的作用是什么?
5.共享内存如何保证安全?lock怎么使用?
6.WaitGroup是什么?它暴露出哪些方法?具体怎么使用?