2024年5月9日11:14:24
学习go
看课8小时转职Golang工程师(如果你想低成本学习Go语言)_哔哩哔哩_bilibili
文档8小时转职Golang工程师 (yuque.com)
1.安装go
2024年5月9日11:27:16
2.安装 vscode go配置环境
vs code配置go开发环境 (zhihu.com)
vscode里面配置代理,然后重启,再安装go的工具包
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.io,direct
3.Golang语言特性
go 优势
•方便(直接编成机器码
•静态语言
•语言层面的并发(不是通过上层一层一层包装出来的并发
•标准库 runtime gc 其他各式各样的库
明星产品(docker、k8s)
劣势
•包托管在私人的github上面 ,不安全
•只有error
•对c的降级处理并不完美
4.语法
hello world
5.声明变量
package main
import “fmt”
var err string = “20”
var publicVariable = 10
func main() {
var a int = 10
//var a = 20
// a:= 20
fmt.Println(a)
fmt.Printf("%T\n", a)
b := "happy"
fmt.Println(b)
fmt.Printf("%T\n", b)fmt.Println(publicVariable)
fmt.Printf("%T\n", publicVariable)fmt.Println(err)
fmt.Printf("%T\n", err)
}
四种方式,全局变量不能用 “:=”
6.const 常量 iota
只能在const里面使用的 iota
按照行进行递增的
7.返回值
具名返回值
(入参)(返参 形参)那里写好名字
返参赋好值
return(只是结束)
8.import 包路径
写完整路径,然后调用方法,会先去包的init方法,然后返回,在执行相应的方法。
记得 暴露出去的方法名 首字母要大写,否则就是private的
9.匿名
因为语法 不能只引用而不用。
一些场景下需要只是用init方法,
. 的话
defer ==finally
就是写在方法之前的关键字
defer 在return之后执行
执行顺序也是栈式的,先进后出
切片本身就是指向数组当前位置的一个指针
slice是个 切片(取数逻辑和python的差不多)然后make([]int,3,5)3是大小,5是容量,下次扩容的大小,追加元素使用append
然后可以使用copy作为深拷贝
range就和java里的iterator一样,迭代器一样。
go就是把赋值的类型放在后面了
java里面也都是值传递,但是没有指针这个东西,直接修改的就是对象。go这个不行
项目
解决:win下安装netcat安装及使用 - 简书 (jianshu.com)
Go 语言 cannot find module providing package github.com/_golang cannot find module providing package import-CSDN博客
两行命令搞定powershell utf-8乱码_powershell 乱码-CSDN博客
总结
挺有趣的,很轻量。
channel的存在确实是顶中顶,先学go,再去学那些消息中间件,应该会更容易理解一些。
(但也不知道是不是写的东西太简单了,可能老师给的这个项目就是类似于 当时c++写的机票管理系统一样的存在吧)