Learn how to use go.
使用环境是 WSL2 + VSCode,然后由于本人刚刚开始学习 Go,所以目前并不会使用 go mod 来配置项目,该项目目前是直接配置在 GOPATH 下的,以后学会用 go mod 管理再改。
如果需要使用我的代码只需要把 GOPATH 设置成该项目路径即可。
Tips:VSCode 可以 ctrl+shift+p 输入 go install tools 安装在 GOPATH 下安装好辅助工具(如代码提示、代码跳转等功能);另外由于包跳转总是打开超链接,可以在 setting.json 加入 "editor.links": false 来关闭这个功能。
[练习1.3](to do)
练习1.10,注意要修改代码,而且在同一个进程内连续访问,才能看到这种缓存的效果。
练习1.11,会等待一段时间后超时错误,我这里是关上 vpn 然后测试 google。
练习1.12,命令行输入 go run 1_12.go web & 后台运行服务器,然后浏览器 localhost:8000 访问即可。
至于为什么我不用 localhost 是因为我用的是 wsl2,windows 下访问 wsl2 的子系统网络需要对应的 ip (可以在 ip addr | grep eth0 获取),另外对应的 go 源程序也要把 localhost 改成对应的要监听的网卡 ip。
- map是基于哈希的,无需。另外和 c++ 不同的是 go 的 map[key] 这种下标访问并不会创建该 key 对应的元素,而 c++ map 的下标运算会。go 一般用 if _, ok := map[key]; ok == true 的方式得知存不存在元素。
- 局部变量当不可访问时被 GC 回收生命周期才结束,而不是函数结束,比如指针指向局部变量是完全可行的,因为还可以被访问所以不会被 GC 回收。