在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
使用了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 文件: 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 @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文件:
新版本省了很多事情, 再也不担心因为环境问题,报错了.
|
请发表评论