准备:
vscode
go安装包
常见问题:
描述:vs提示安装gopls等,但总是安装失败,如:Installing github.com/uudashr/gopkgs/v2/cmd/gopkgs FAILED
解决:
// 开启代理设置,Go 1.13 以上默认启用,可跳过此步
go env -w GO111MODULE=on
// 设置代理
go env -w GOPROXY=https://goproxy.io,direct
描述:import (“自己的包”)时,提示路径内没有,提示$GOPATH、src文件夹下没有
解决:
参考以下写法
import (
"../controllers" //这里就是导入上一级目录中的controllers
"./models" //同一级目录中的models
"./models/entitys" //当前目录下的entitys
"../../routers" //上两级目录的routers
)
描述:在编译时,报出 golang build command-line-arguments: cannot find module for path xxxxx
解决:
在终端输入:go env -w GO111MODULE=auto
描述:在调试时报出 package command-line-arguments is not a main package
原因:当前开始运行的程序中没有main()函数
解决:编写main函数或切换到包含main函数的程序
描述:程序中使用os.Open打开相对目录中的文件,报错未找到文件
解决:
./ 为你当前的project目录,不是.go文件的路径
../为当前的project的上一级目录
描述:'xxx'单引号、"xxx"双引号的区别
解释:
"" 双引号是用来表示字符串string,其实质是一个byte类型的数组
'' 单引号表示rune类型
`` 反引号(键盘Esc下方的键),用来创建原生的字符串字面量,它可以由多行组成,但不支持任何转义序列。
当把两个不同类型的变量进行拼接时,就会报错!
描述:使用csv.NewReader()读取csv文件后,在使用strconv.ParseFloat()读取行尾数据时,碰到invalid syntax错误
解释:
csv文件行尾可能有其它字符,需要去除后再尝试
描述:os.OpenFile("xxx.xx",os.O_RDWR,0xxx)中,传入的第三个参数(权限)意义
解释:
0777表示:创建了一个普通文件,所有人拥有所有的读、写、执行权限
0666表示:创建了一个普通文件,所有人拥有对该文件的读、写权限,但是都不可执行
0644表示:创建了一个普通文件,文件所有者对该文件有读写权限,用户组和其他人只有读权限,都没有执行权限
描述:vscode 提示:gopls requires a module at the root of your workspace.You can work with multiple modules by opening
解释:当项目中存在多个package时,可以分别为每个package创建独立的目录,即一个目录下的仅包含一个package的定义内容,当存在多个package定义时,将出现该提示信息
解决:
文件目录格式如下:
GoProject //项目根文件夹
|--dir_main(package_main) //主函数文件夹(package main)
| |--main.go //主函数代码文件(package main)
|
|--dir_1(package_1) //功能1文件夹(package 1)
| |--pkg1_1.go //功能1代码文件1(package 1)
| |--pkg1_2.go //功能1代码文件2(package 1)
|
|--dir_2(package_2) //功能2文件夹(package 2)
| |--pkg2_1.go //功能2代码文件1(package 2)
| |--pkg2_2.go //功能2代码文件2(package 2)
| |--pkg2_3.go //功能2代码文件3(package 2)
|
描述:保存文件时,vscode会将未能识别的包字符删除,导致无法编译通过
解释:vscode中的自动格式化功能,会将未引用的包删除,当项目包含多个包及代码文件时,或遇到bug时,将不能识别部分包及其下的函数,保存时就会将该包import引用段删除。go编译器在编译是,则不会使用vscode的识别结果,往往编译器可以编译通过,但vscode自动识别有问题。
解决:在vscode窗口内按下Ctrl+Shift+P,“配置语言特定的设置”,选择Go,会打开settings.json文件,在"[Go]":{}内添加以下字段,没有可主动输入,注意在字段前加",",否则格式会报错。
"[go]": {
"editor.insertSpaces": false,
"editor.formatOnSave": true, // 文件保存前自动格式化
"editor.codeActionsOnSave": {
"source.organizeImports": false // 自动组织import包,若本文件代码中无引用此包,会自动删除
},
"editor.suggest.snippetsPreventQuickSuggestions": false
}