ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

vscode 开发go版本1.14项目

2021-02-10 12:33:38  阅读:174  来源: 互联网

标签:1.14 set vscode projectPath echo go hello mod


使用vscode 开发go项目的最新姿势. go版本1.14.2

 

使用了go 1.14.2. 版本, 再也不用建src, pkg, bin 目录了,   以及再也不用强制配置GOPATH了

前提条件:

必须是 go mod 项目.  

 

在工程目录下, 执行这样的命令生成一个mod文件

go mod init example.com/user/hello  

 

最新的项目结构:

 

 

这个工程是建立再本地磁盘的任意地方的.

 

 

vscode调试工程配置: launch.json

复制代码
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}",
            "env": {},
            "args": []
        }
    ]
}
复制代码

 

go.mod 文件:

1 2 3 4 5 module example.com/user/hello   go 1.14   require github.com/google/go-cmp v0.4.0

 

 

非调试模式运行项目:  

在工程根目录下新建一个run.sh文件,内容如下:

复制代码 #/bin/bash projectPath=$(cd `dirname $0`; pwd) cd $projectPath
module=`go list -m`
projectName=`basename ${module}` export GOBIN=$projectPath
go install echo "工程目录:" $projectPath echo "执行文件:" $projectPath/$projectName echo ./$projectName 复制代码

 

支持Windows的版本: run.bat

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 @echo off chcp 65001   set projectPath=%~dp0 set GOBIN=%projectPath% cd /d %projectPath%   REM 获取模块名 for /F %%i in ('go list -m'do set module=%%i)   REM 获取生成的二进制文件名 set lj=%module% set "lj=%lj:/= %" for %%i in (%lj%) do set binFileName=%%i   echo "工程目录:" %projectPath% echo "执行文件:" %projectPath%/%binFileName% go install %binFileName%

  

在任意地方都可以跑这个项目了:

运行示例1:在非项目下执行

 

运行示例2: 直接在项目目录下执行

 

 

 输出的二进制文件名是module名 最后一个斜杠后面的字符串.    可以不用加路径.  

如go mod init hello  那么输出的二进制文件是hello

如go mod init gitlab.com/dzq/hello  那么输出的二进制文件也是hello

 

模块名可以和项目目录名不一致, 但是建议 模块名和目录名一致, 方便理解. 

在项目目录 go import 的字符串 应该是 模块名加上包名, 不是项目目录加上包名

 

对应的go.mod文件:

 

 

 

新版本省了很多事情, 再也不担心因为环境问题,报错了.

 

标签:1.14,set,vscode,projectPath,echo,go,hello,mod
来源: https://www.cnblogs.com/Leo_wl/p/14395466.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有