准备:

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
    }