go的几个特点
可以粗略的认为go = c + python
- 从C语言中继承了很多理念,尤其是指针的运用
func testPtr(num *int) {
*num = 20
}
引入包的概念,用于组织程序结构。单独的go文件必须存在于package中
垃圾回收制度,内存自动回收。
语言层面天然支持高并发
使用了goroutine
的语法,轻量级线程,高效利用多核吸收了管道通信机制,有管道的写法,
channel
的写法,通过管道实现不同goroute之间的相互通信。支持一些新的语法,例如切片(slice)和 延迟请求defer
func getSumAndSub(num1 int, num2 int) (int, int) {
sum := num1 + num2
sub := num1 + num2
return sum, sub
}
常见的go命令
go run test.go // 执行go文件,相当于 先编译生成可执行文件后接着执行它
go build test.go //编译生成可执行文件
//注意:windows平台生成exe,但是mac就是一个test,无后缀,使用方式./test即可
两者的三个主要区别:
- go bulid编译后生成的可执行文件,可以直接拿到同平台下但是没有go开发环境的机器下运行。
- go run不会编译生成可执行文件,不能在没有go开发环境下的其它机器上运行。
- .go的源文件虽然很小,但是编译后会将源代码所依赖的库文件编译进来,导致生成的可执行文件很大。
关于编译的几个参数:
- 编译时可以改变生成的可执行文件的名字
go build -o hello-new hello.go
可执行文件就会叫hello-new
在VSCode
下搭建开发环境
- 毫无疑问,第一步去官网下载
GO
的安装包,Q内需要使用镜像. - 配置
path
,即GOROOT变量的位置,代表的是安装go的路径。
// 在.bash_profile中配置
export PATH=$PATH:/usr/local/go/bin
//新版本的go只需要配置这一个就行,GOPATH会有默认值
// go env可以查看所有的开发变量的配置
- 在
VSCode
中安装相关插件,创建.go文件后,会提示你安装Go
基础插件,但是其他go
依赖的官方包由于Q内网络环境需要单独下载,详见第四步。 - 在
GOPATH
目录的src下(一般默认是/Users/yourMacName/go/src)
cd /Users/yourMacName/go/src
mkdir golang.org
cd golang.org
mkdir x
cd x
git clone https://github.com/golang/tools.git tools
git clone https://github.com/golang/lint.git
然后通过在Vscode中command+shift+p
接下来会提示有17个可以安装的依赖包(不同版本数量可能不一样,不一定你的也是17个),全部勾选,点击OK
在VScode
的output会发现正在安装(当然上述的过程可能也会失败几次,不一定17个依赖全部一次性Succeed
但是只要golang.org/x里面的安装安装对了,这一部就是看网络了,总会安装成功,运气不好的话多安装几次)
👌,You’re readey to GO :).
go的注意事项
- 毫无疑问,后缀只能是go,入口文件必须是main(),严格区分大小写。
- 凡是定义过的变量、引入的包必须在原文件中被使用,否则编译不通过。
- 逐行写代码,不要两行写到一块,因为编译器会自动在末尾加分号。
- 左大括号禁止换行。
- main函数必须存在package main中,而且不能重复定义,也就是一个package中只能有一个main函数。
- go的转义符(escape char),
\r
回车的意思是,替换掉本行开头的字符,例如 小明出去吃饭了\r小刚,最终打印结果是: 小刚出去吃饭了 - 如果一行字符实在太长了,可以使用
,
来进行换行,效果等同于+