当前位置:   article > 正文

Windows下 VSCode 配置 Go 开发环境_go not in std

go not in std

写这篇文章的目的,是为了把这些步骤记录下来。以备不时

包含哪些内容

  • 如何在 Visual Studio Code 中进行 Go 调试
  • 编写并使用自己的 Go 语言包
  • 在Linux上安装 Go,Go install

Go安装以及配置

  1.  Go语言环境 Go语言环境下载 提醒:如果对代码有洁癖的,请不要安装在 C 盘
  2. 安装后增加环境变量
    1. path=D:\Go\bin                                        //这个是安装目录
    2. GOPROXY=https://goproxy.io,direct     //代理 方便下载 Go 调试工具
    3. GO111MODULE=on
    4. GOPATH=****                                        //这个系统变量是安装后新增的,无需添加
    5. cmd 输入 go env 检查相应的环境变量
  3. 配置调试工具
    1. cmd >> go get -v golang.org/x/tools/gopls        //会下载在 GoPath 目录下

    2. cmd >> go get -v github.com/go-delve/delve/cmd/dlv 

    3. GOPATH 目录下增加了一个 bin 目录 和 pkg 目录

新建一个go项目

                1.在 GoPath 下新建文件夹 goproj

                2.在 goproj 下新建一个 main.go  包含 main 函数

VSCode安装以及配置

        1.Visual Stdio Code Visual Studio Code 下载

        2.安装 Go 扩展

        3.使用 vscode 打开刚刚创建的 goproj 文件夹

        4.配置 launch.json 文件

        {

            "name": "Go Debug",

            "type": "go",

            "request": "launch",

            "mode": "auto",

            "program": "main.go",

            "env": {

                  "GOPATH": "D:/IDE/vsc-code/GoCode",                //这里填 环境变量 GOPATH,vscode调试会用到

                  "GOROOT": "D:/Go"                                                 //这里填 Go 的安装目录

            }

        //下面这个是附加到进程调试

        {

            "name": "Attach to Process",

            "type": "go",

            "request": "attach",

            "mode": "remote",                                // "local"

            "port": 2345,                                        //默认就是 2345 爱改不改

            "host": "192.168.234.128",

            "processId": 4532                                  //注意这里进程id 是远程 机器上 dlv 进程的id

        }

        }

编写 Go,调试 Go,使用自定义 Go 包

        编写自定义包,需要将自己的包文件夹放在 Go安装目录/src 下。这里定义了一个 mytest 包,包中包含两个 go 文件,mytest1.go 和 mytest2.go 文件。文件编写后依次执行以下命令

 go build mytest

 go install mytest

成功后 D:\Go\pkg\windows_amd64\mytest.a 文件

1.项目启动文件         main.go                GoPath/main.go        
  1. package main
  2. import (
  3. "fmt"
  4. "mytest" //引入自己的包
  5. )
  6. func main() {
  7. println("hello go!")
  8. mytest.Functest() //使用自定义包中函数
  9. fmt.Printf("\n")
  10. mytest.Functest2() //使用自定义包中函数
  11. }

2.自定义包 mytest       

        mytest1.go        Go安装目录/mytest/mytest1.go

  1. package mytest //自定义包名
  2. import "fmt"
  3. func Functest() {
  4. fmt.Printf("调用mytest1.go funtest")
  5. }

        mytest2.go        Go安装目录/mytest/mytest2go

  1. package mytest //自定义包名
  2. import "fmt"
  3. func Functest2() {
  4. fmt.Printf("调用mytest2.go funtest")
  5. }

必要说明:这两个go文件,都在 包 mytest 之下,都属于mytest包


Go build **pkg is not in std / goroot

        解决方法1

                把你的 pkg 包放到安装目录 GOROOT/src 下面去

        解决方法2

                把你的项目做成一个模块,具体可以参考                  How to Write Go Code - The Go Programming Language

                

Linux上build Go 项目

go mod init goproj         //初始化一个模块,启动文件就是 goproj.go 其中包含 main 函数cd cd mytest                        //my test 在 goproj 目录下面,这里不需要在初始化模块了
go build                           //mytest 只是个package build 内容在 go build cache 文件,可以不 build

  1. package main
  2. import (
  3. "fmt"
  4. "goproj/mytest" // 引入 mytest package
  5. "strconv"
  6. "time"
  7. )

go install goproj                //会生成一个 goproj 可执行文件,位于 GOBIN 目录下,这个是一个 module build 不生效,

go install goproj -gcflags "all=-N -l"                //用于调试的 版本

具体可以参考 How to Write Go Code - The Go Programming Language

注:因为在 Linux 我把项目弄成一个module了,所以 main.go 相应改成了包名 goproj.go

远程调试

众所周知服务器开发一般是在 Linux 下,所以这里配置远程Linux附加调试

export GOPROXY=https://goproxy.io,direct     //代理 方便下载 Go 调试工具

安装调试工具

go install github.com/go-delve/delve/cmd/dlv@latest

 dlv attach <pid> --listen=:2345 --headless --api-version=2 --log        //dlv附加

之后就是 启动 vs code 进行调试了,vscode 代码按理来说需要和 远程机器上的一致。要是不一致,我也不知道会怎么样咯。

最后看看远程附加调试效果

Linux这边

VScode这边


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/409560
推荐阅读
相关标签
  

闽ICP备14008679号