golang入门到项目实战 [2022最新Go语言教程,没有废话,纯干货!]
从事托管服务器,服务器租用,云主机,虚拟空间,域名注册,CDN,网络代维等服务。
用vscode开发go的时候,安装go包报错:connectex: A connection attempt failed because the connected party did not
视频一开始讲go语言有什么特点之类的,完全不用管,刚开始学也记不了这些。
下载官网
安装到自己喜欢的位置,接着设置环境变量:安装的位置/bin
,我是在D:/Go/
到高级属性设置
可以看到它自动在我们的用户变量弄了GOPATH
,这是以前放项目的地方,但是弄了模块化后就没必要了
找到系统变量的Path
点击编辑,发现它也是自动帮我们设置好了:
查看版本:
管理员模式打开Power Shell,设置go的环境变量(后面发现这里弄的环境对VScode没影响):
输入:
$env:GO111MODULE="on"
$env:GOPROXY="http://goproxy.cn"
这个是网站链接
https://git-scm.com/downloads
这个也是网站链接
https://code.visualstudio.com/download
自行安装好后就配置环境:
选自己喜欢的位置,这个就是未来VScode的工作区了,而CMD 命令行运行如下:
mkdir go
cd go
mkdir go_prod
go env -w GO111MODULE=on
go mod init go_prod
code ./go_prod
新建一个go后缀的文件,运行以下程序
package main
import "fmt"
func main(){
fmt.Println("Hello World!")
}
结果如下:
go build 实际存在可运行出结果的go文件
接着就生成一个exe后缀的文件,运行它就行了
运行命令:
./main.exe
go run 实际存在可运行出结果的go文件
直接产生结果:
格式化的意思:把代码排到令一般人觉得舒服并易于理解的位置。
如果只是对于单个文件的话,这个命令相较于自己在VScode安装一个格式化的插件效果不太好,多个文件就好用了。
go fmt
举例:我想下个mysql的包
到官网的搜索栏,选个mysql,拿到下载地址。
跑回VScode的终端栏,输入命令如下:
go env -w GOSUMDB=off
go env -w GOPROXY=https://goproxy.cn,direct
go get github.com/go-sql-driver/mysql
安装成功提示:
行注释 Ctrl + /
块注释 shift + Alt + a
删除行 Ctrl + shift + k
查找文件 Ctrl + e
打开设置命令行 Ctrl + shift + p
命令1:生成主函数
在代码那栏输入:
pkgm
命令2:生成输出函数
fp
代码自动补全和选择导入包
参考链接:vs code golang代码自动补全
由于VSCode的不停更新,很多配置的位置发生了变化,我操作也是云里雾里,可能我的步骤会有些多余,由于之前就已经输入了如下的命令:
go env -w GOPROXY=https://goproxy.cn,direct
所以我先是输入“ctrl + shift + p”,再输入go:install/update,点击它
接着我就有如下这好几个选项,全部勾上,有的博客会说安十多个,可能是因为版本不一样吧,之后是一定会安装成功的,如果你跟着我之前的操作的话:
安装好后,我就到这里面:
在选择栏那里输入 go,再随便点击任何一个setting.json
:
在上面的editor.quickSuggestions
加上:
"go.useCodeSnippetsOnFunctionSuggest": true
重启VSCode,我们拿这个案例进行测试:
你现在看到我这里会提示你没导入fmt这个包
之后鼠标移动到fmt
,会有个????按键,点击它,会有提示Add import “fmt”,这里点上,它就会自动帮你补上:
命令3:输出对应变量
先定义变量,顺便附上值:
s:="hello"
接着输入
s.pr
VScode就会提示自动补全最终如下:
其他的快捷命令
ff fmt.Printf("", var)
for for i := 0; i < count; i++ {}
forr for _, v := range v {}
fmain func main() {}
package user is not in GOROOT (D:\go\src\user)
要在D:\go\src
目录下新建一个user
包,在包里定义函数
src/user/user.go
//定义包名
package user
//定义hello函数
func Hello() string{
return "Hello"
}
~/main.go
:调用包,放在随意一个位置
package main
import ("fmt"
"user")
func main(){
s:=user.Hello()
fmt.Printf("s: %v\n",s)
}
go mod init 任意名
我心态都炸了,原来调用根目录文件夹下自定义包是要这样写的。
Go初学者坑记之 go mod init 和自定义包的使用
我的go文件存放目录
在VScode的终端输入如下
自己main.go文件修改成如下形式:
package main
import ("fmt"
"paturnax/user")
func main(){
s:=user.Hello()
fmt.Printf("s: %v\n",s)
}
最终效果: