第一课 Go语言基础入门

141 阅读4分钟

“你,何以始终不说话 尽管讲出不快吧 事与冀盼有落差 请不必惊怕” ————Eason《无条件》

第一课 Go语言基础入门

一.简介

1.1 什么是Go语言

1.高性能、高并发

2.语法简单、学习曲线平缓

3.丰富的标准库

4.完善的工具链

5.静态链接

6.快速编译

7.跨平台

8.垃圾回收

1.2 哪些公司再用

总结:很多

1.3 字节跳动为什么全面拥抱 Go 语言

1.最初使用的 Python,由于性能问题换成了 Go

2.C++ 不太适合在线 Web 业务

3.早期团队非 Java 背景

4.性能比较好

5.部署简单、学习成本低

6.内部 RPC 和 HTTP 框架的推广

二.入门

2.1 开发环境

官网下载go.dev 无脑下一步就好 配置开发环境,GOPATH&GOROOT,这个网上搜教程就好,我估计在不久的将来则不用咱们配置环境变量了。

编译器,集成开发环境我建议直接用Goland一步到位,小白学习语法的话我推荐更偏向使用sublime,进阶用vscode。

2.2 基础语法

1.helloworld

2.变量声明“var 变量”,或者“变量:=”

3.if else

4.循环只有for

5.switch分支

6.数组

7.切片

8.map,m :=make(map[string]int)

9.range(常用在for里进行遍历)

10.函数(变量类型写在后面)

11.指针,操作有限,对传入的函数进行修改。

12.结构体

13.结构体方法,类似于类成员函数

14.错误处理

15.字符串操作,字符串工具函数,自己看操作手册吧

16.字符串格式化

17.json处理,数列化字符串,json.MarSa...

18.时间处理,time.Parse,new.Unix()获取时间戳。

19.数字解析

20.进程信息

总结:这部分东西太多了,记忆肯定记不住,必须得翻阅文档,没有操作手册寸步难行。多写写代码就好了。

三.实战

这是我练笔先写的代码:

1.猜字谜游戏

用时间戳初始化随机数种子

*代码过程中遇到了Seed被弃用的情况,我没搞明白这俩货色的区别,下面回答是chatgpt告诉我的: 在之前提供的代码中,使用了rand.New(rand.NewSource(time.Now().UnixNano()))来创建一个新的伪随机数生成器,并通过当前时间的纳秒级别作为种子来初始化生成器。这是为了确保每次程序运行时,生成的随机数序列都是不同的。然而,在修改的代码中,将其替换为rand.Seed(time.Now().UnixNano())。这是因为rand.Seed()函数的作用是设置随机数生成器的种子值。通过将time.Now().UnixNano()作为种子,每次程序运行时都会得到一个不同的种子值,从而产生不同的随机数序列。通过将种子值设置为当前时间的纳秒级别,可以产生足够的随机性,使得随机数序列在不同的程序运行中具有很高的差异性。这样可以避免在相同种子下生成相同的随机数序列,从而增加程序的随机性和变化性。 使用rand.Seed(time.Now().UnixNano())是一种常见的设置随机数种子的做法,以获得更好的随机数生成效果。

*代码在用课程视频里源码的时候遇到了无论怎么都输出“输入无效”的结果。感觉是输入字符串被处理为空。将input = strings.TrimSuffix(input, "\n")换成input = strings.TrimSpace(input)就解决问题了。但是还是很蒙,为什么TrimSuffix修改括号内容后还是不行。这是gpt告诉我的: TrimSuffix和TrimSpace是Go语言字符串处理中的两个函数,它们有不同的功能和用途。 TrimSuffix TrimSuffix函数用于删除字符串末尾指定的后缀。 它接受两个参数:输入字符串和要删除的后缀字符串。 如果输入字符串以指定的后缀结尾,则返回删除后缀的新字符串;否则,返回原始字符串。 使用TrimSuffix可以方便地删除给定字符串的特定后缀。 示例: input := "Hello, World!" suffix := "World!" result := strings.TrimSuffix(input, suffix) fmt.Println(result) // Output: Hello, TrimSpace TrimSpace函数用于删除字符串的首尾空白字符。 它会删除字符串开头和结尾的空格、制表符、换行符等空白字符。 返回删除空白字符后的新字符串。 使用TrimSpace可以方便地去除用户输入字符串中不必要的空格和空白字符。 示例: input := " Hello, World! " result := strings.TrimSpace(input) fmt.Println(result) // Output: Hello, World! 总结:TrimSuffix用于删除字符串末尾的指定后缀,而TrimSpace用于删除字符串的首尾空白字符。 它们是两个不同的函数,用于不同的字符串处理场景。 TrimSuffix和TrimSpace函数都返回处理后的新字符串,原始字符串不会被修改。

2.在线词典

没搞明白,但大概理解为如何获取json文件。需要有一些网编基础。我先去看看别的教程再说吧,随缘再写个新笔记。

3.SOCKS5代理

https三次握手

socks5代理服务器基于tcp/ip协议