go小白入门 | 青训营笔记

85 阅读2分钟

1、青训营课程笔记

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天,今日主要学习了依赖管理管理过程、单元测试、Mock 测试和基准测试以及最后运用go搭建建议可回帖网页。

1.1依赖管理

工程项目不可能基于编码0~1进行搭建,一般需要依赖库,go的依赖管理从gopath>go vendor>go module,其中gopath无法实现package的多版本控制,go vendor无法控制版本会冲突,进而出现了go module

1.2测试

单元测试一般覆盖率;50%~60%较高可达80%;测试分支相互独立、全面覆盖;单元颗粒足够小。而基准测试则优化了代码,需对当前代码分析、内置测试框架可进行基准测试。

1.3项目实践

目的:1.展示话题和回帖 | 2.仅仅是本地web | 3.数据用文件储存。

情况:课程中一直没找全源码导致一直卡在web框架搭建部分,于是自己去找资料学习并总结了关于简易web搭建的方法。

首先我们需要监听某端口建立服务:

func main() {

   // 监听某端口建立服务
   server, err := net.Listen("tcp", "0.0.0.0:1515")
   if err != nil {

   }
   println("正在运行...")

这一步需要把端口建立起来这边就用1515.

然后我们需要循环接受客户端,并且第一步要先接受客户端:

if client, err := server.Accept(); err == nil {

此处逻辑部分的协程:

// 逻辑部分 协程
go func(client net.Conn) {

   // 接收客户端的数据
   var b = make([]byte, 1024)
   for {

      num, err := client.Read(b)
      print(string(b[0:num]))
      if err != nil || num < 1024 {

         break
      }
   }

之后需要发送数据给客户端:

_, err := client.Write([]byte("HTTP/1.1 200 OK\r\nContent-Type: text/html;charset=utf-8\r\nServer: Hello/0.1\r\n\r\nHello World!<br>你好,世界!"))
if err != nil {
   return
}

这里只进行了文字的发送内容简单、操作便捷。

最后就剩下关闭client的socket

err = client.Close()
if err != nil {
   return
}

这样我们就可以实现一个简单的发送文字的web客户端了,需要注意的是在编译结束后运行会提示网络使用的提醒,记得点击同意。在运行结束后去到浏览器中输入我们上面的网址(127.0.0.1:1515/)就可以访问网页了,网页内容就是发送:你好,世界!Hello World!如下图:

图片.png

这时候回到goland中可以看到信息反馈到goland里面了~(ps:熬到2点多把笔记整理出来好困啊啊啊啊)

图片.png