Golang

资源集中地:
https://github.com/shockerli/go-awesome
学习路线:
https://github.com/yangwenmai/learning-golang

https://tobebetterjavaer.com/xuexiluxian/go.html#_1-视频课
项目:
https://github.com/geektutu/7days-golang

https://segmentfault.com/a/1190000041080720

1m-go-websockets - 该项目演示了如何用 Go 编写一个可以提供超过一百万个 websockets 连接、运行内存小于 1GB 的服务器
https://github.com/eranyanay/1m-go-websockets

ubuntu环境配置

创建临时目录,同来存储下载的压缩包:

mkdir tmp
cd /tmp
wget https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz

解压缩文件, 并把相关的文件移到系统目录下:

sudo tar -xvf go1.11.linux-amd64.tar.gz
sudo mv go /usr/local

修改配置文件让环境变量生效:

cd ~
vi .bashrc

在文件末尾加上:

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

然后刷新:

source ~/.bashrc

测试:

go version

搞定,下面可以开始编写第一个go程序了,用vi写好hello.go以后直接用go run hello.go执行,看到整个世界。

参考资料:

GO语言特性

= 是赋值, := 是声明变量并赋值。

当我们想要在 Go 语言中初始化一个结构时,可能会用到两个不同的关键字 — make 和 new。因为它们的功能相似,所以初学者可能会对这两个关键字的作用感到困惑1,但是它们两者能够初始化的变量却有较大的不同。

make 的作用是初始化内置的数据结构,也就是我们在前面提到的切片、哈希表和 Channel2;
new 的作用是根据传入的类型分配一片内存空间并返回指向这片内存空间的指针3;

返回值不用显式地写
函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。

func name(parameter-list) (result-list) {
body
}

数组的长度是数组类型的一个组成部分,因此[3]int和[4]int是两种不同的数组类型。数组的长度必须是常量表达式,因为数组的长度需要在编译阶段确定。
q := [3]int{1, 2, 3}

# 77.组合
func combine(n int, k int) (ans [][]int) {
	temp := []int{}
	var dfs func(int)
	dfs = func(cur int) {
		// 剪枝:temp 长度加上区间 [cur, n] 的长度小于 k,不可能构造出长度为 k 的 temp
		if len(temp) + (n - cur + 1) < k {
			return 
		}
		// 记录合法的答案
		if len(temp) == k {
			comb := make([]int, k)
			copy(comb, temp)
			ans = append(ans, comb)
			return 
		}
		// 考虑选择当前位置
		temp = append(temp, cur)
		dfs(cur + 1)
		temp = temp[:len(temp)-1]
		// 考虑不选择当前位置
		dfs(cur + 1)
	}
	dfs(1)
	return 
}

GO语言硬核项目:MIT 6.824分布式系统

课程地址:https://pdos.csail.mit.edu/6.824/schedule.html
知乎教程:https://zhuanlan.zhihu.com/p/260752052
如何学习6.824?:https://www.zhihu.com/question/29597104
整体介绍:https://codeantenna.com/a/XbTEkCi0Uu
整体规划:
https://github.com/mao888/golang-guide

web博客项目/个人网站(以后长期维护使用)

chatgpt管家融进去
需不需要考虑多个用户?
我觉得初始阶段不考虑
这个项目的定位是广度,充分掌握整体框架和技术面,也相当于新技术的试验田

源码资料很全:
https://github.com/mao888/bluebell

希望是比较全
Redis、Docker、k8s这些我希望用到
https://www.yuque.com/u28879420/eqmmue/yrvsnu?# 《学习《Bluebell》》

https://github.com/wendal/gor#chinese-introduction

最终选定的参考项目:
https://github.com/LouisYZK/Frodo/blob/master/readme_zh.md
这是一个前台用python(fastapi),后台用go(gin)的项目,很适合我的技术栈。用到了redis,并实现了docker部署等。
作者对关键地方做了文档,在知乎发布的文章显示作者的水平不错。虽然教程不是特别完整,但是我觉得拿下这个项目。

posted @   wjybq  阅读(125)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示