Go 语言基础入门 | 青训营笔记

64 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第1天,主要学习了go语言的基础语法,以及实现了三个小Demo

  • 猜数游戏
  • 在线词典
  • SOCKS5代理

golang基础

1.基础变量声明

常见主要有3种方法

  • var a = 1
  • a := 1
  • var a int = 1

2.if/for等

它们的条件都可以不用被括号包围,如果写成被包围的格式,编译的时候也会被自动去掉 if a == 1{ ... }

3.数组

  • var a [8]int
  • b := [5]int{1, 2, 3, 4, 5}

4.切片

变长数组slice,make类似malloc,append如果长度不够会发生扩容然后再返回,所以需要赋值

  • a = make([]string, 3)
  • a = append(a, "wo")

其余的map,以及错误处理和其他语言大差不差,后面主要介绍了一些api,比如json,strconv,env等等

猜数游戏

生成一个随机数,让用户猜数,告知是猜大了还是猜小了,用rand.Intn的时候,如果不设置随机数种子,则会生成一样的数,建议用时间戳来设置 官方文档如下;

  • Seeding with the same value results in the same random sequence each run.
  • For different numbers, seed with a different value, such as
  • time.Now().UnixNano(), which yields a constantly-changing number 实现中需要注意的代码如下
func main() {
   rand.Seed(time.Now().UnixNano())
   var secretNum int = rand.Intn(maxNum)
   reader := bufio.NewReader(os.Stdin)
   userInput, err := reader.ReadString('\n')
   numString := strings.TrimSuffix(userInput, "\r\n")
}

在线词典

这个程序实现的就是当用户输入一个单词的时候,会返回该单词的音标以及对应的释义,主要通过一些第三方的api来实现,可以学到HTTP请求的发送和接收响应,以及golang中JSON的序列化

SOCKS5

通过net标准库,socks5协议来实现点对点的传输,主要可以用于认证传输获取数据,这种代理协议很多vpn都有涉及

总结

总体来说,这个入门视频挺不错的,能比较快地上手golang,学习了基础语法、HTTP请求响应以及一些网络传输的项目 个人感觉golang优点类似c加了垃圾回收一样,然后有go routine的协助,也能比较简单地写出高效率的代码