使用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 文件:

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文件:

 

 

 

新版本省了很多事情, 再也不擔心因為環境問題,報錯了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM