标签: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 $projectPathmodule=`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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。