示例项目布署
goframe 2020-10-14 16:49:18

项目名称为my-hello

 

 

1、配置编辑器

WX20201014-170632@2x.png

WX20201014-170801@2x.png

 

增加一个go.mod文件(也可以在项目根目录下使用 go mod init 项目名称命令初始化项目生成该文件),内容如下: 

C/C++ Code复制内容到剪贴板
  1. module my-hello  

 

其中,my-hello为当前项目的名称,可以随意设置。

就这样简单便完成了项目的module初始化。

一般情况下,go.sum依赖分析文件应当被添加到版本管理中随着go.mod文件一起提交。

 

WX20201014-165114@2x.png

设置Goland启用vgo 

vgo是基于Go Module规范的包管理工具,同官方的go mod命令工具类似

其中Proxy请输入代理地址下载依赖包,如果选择direct表示不使用代理。可选择的反向代理地址有:

https://goproxy.cn

https://goproxy.io

https://mirrors.aliyun.com/goproxy/

详见Go官网说明:https://github.com/golang/go/wiki/Modules#are-there-always-on-module-repositories-and-enterprise-proxies

这里请务必选择一个代理地址输入。

 

2、手动修改go.mod文件如下:

C/C++ Code复制内容到剪贴板
  1. module my-hello  
  2.   
  3. require github.com/gogf/gf latest  

增加GoFrame框架的依赖,其中latest表示使用最新版本,IDE将会立即去更新下载框架代码。成功后,IDE将会修改go.mod文件并生成go.sum依赖分析文件。

 

3、要过很久一段时间,而且编辑器中找不到是在下载还是没下载

随后go.mod文件被自动更新为:

WX20201014-171846@2x.png

其中v1.6.13表示vgo检测到的最新框架版本。

 

4、初始化项目

gf init

 

项目完成。

 


 

Tips:

如果下载最新代码框架后出现下图情况:

请按快捷键 ⌥(option)+↩(return) 或者 鼠标右键, 选择 Sync packages of my-hello

随后等待几秒钟之后, 可以看到左侧的Go Module已经有内容,并且中终端自动输出了下载的框架版本

 


 

开发环境配置:

 Go环境变量

 为方便开发,在开发环境往往需要设置三个环境变量:

  1. $GOROOT:go的安装目录,配置后不会再更改;
  2. $GOPATH:go项目在本地的开发环境的的项目根路径(以便项目编译,go buildgo install),不同的项目在编译的时候该环境变量可以不同;
  3. $PATH(重要):需要将go的bin目录添加到系统$PATH中以便方便使用go的相关命令,配置后也不会再更改;

Go的环境变量在官方文档中也有详情的说明,请参考链接:https://golang.google.cn/doc/install/source

环境变量中的$GOOS$GOARCH是比较实用的两个变量,可以用在不同平台的交叉编译中,只需要在go build之前设置这两个变量即可,这也是go语言的优势之一:可以编译生成跨平台运行的可执行文件。感觉比QT更高效更轻量级,虽然生成的可执行文件是大了一点,不过也在可接受的范围之内。 例如,在Linux amd64架构下编译Windows x86的可执行文件,可以使用如下命令:

copy
CGO_ENABLED=0 GOOS=windows GOARCH=386 go build hello.go

遗憾的是交叉编译暂不支持cgo方式,因此需要将环境变量$CGO_ENABLED设置为0,这样执行之后会在当前目录生成一个hello.exewindows x86架构的可执行文件。

环境变量设置

除了$PATH环境外,其他环境变量都是可选的。

为什么说这个步骤可选呢?因为未来的Go版本慢慢开始移除对$GOPATH/$GOROOT的支持。此外,在Goland这个IDE中集成有Terminal功能,直接使用这个功能中已经设置好了环境变量。

*nix下设置环境变量

*nix系统下(Linux/Unix/MacOS/*BSD等等),需要在/etc/profile中增加以下环境变量设置后,执行命令#source /etc/profile重新加载profile配置文件(或重新登录),将以下变量添加到用户的环境变量中:

copy
export GOROOT=/usr/local/go export GOPATH=/Users/john/Workspace/Go/GOPATH export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

 

 

IDE工具配置

本文以Goland开发工具为基础,介绍在该IDE下的常用工具配置。

常用的工具包括:

  1. go fmt : 统一的代码格式化工具(必须)。
  2. golangci-lint : 静态代码质量检测工具,用于包的质量分析(推荐)。
  3. goimports : 自动import依赖包工具(可选)。
  4. golint : 代码规范检测,并且也检测单文件的代码质量,比较出名的Go质量评估站点Go Report在使用(可选)。

go fmtgoimportsgolangci-lint的配置

由于这三个工具是Goland自带的,因此配置比较简单,参考以下图文操作示例:

  1. Goland的设置中,选择Tools - File Watchers,随后选择添加

  2. 依次点击添加这3个工具,使用默认的配置即可

  3. 随后在撸代码的过程中保存代码文件时将会自动触发这3个工具的自动检测。

golint工具的安装及配置

golint的安装

由于Goland没有自带golint工具,因此首先要自己去下载安装该工具。

使用以下命令安装:

copy
mkdir -p $GOPATH/src/golang.org/x/ cd $GOPATH/src/golang.org/x/ git clone https://github.com/golang/lint.git git clone https://github.com/golang/tools.git cd $GOPATH/src/golang.org/x/lint/golint go install

安装成功之后将会在$GOPATH/bin目录下看到自动生成了golint二进制工具文件。

golint的配置

  1. 随后在GolandTools - File Watchers配置下,通过复制go fmt的配置

  2. 修改NameProgramArguments三项配置,其中Arguments需要加上-set_exit_status参数,如图所示:

  3. 保存即可,随后在代码编写中执行保存操作时将会自动触发golint工具检测。

配置备份导入

也可以通过保存以下XML配置文件内容,使用import导入功能即可完成配置(golint还是得自己安装)。

文件内容:

copy
<TaskOptions>   <TaskOptions>     <option name="arguments" value="fmt $FilePath$" />     <option name="checkSyntaxErrors" value="true" />     <option name="description" />     <option name="exitCodeBehavior" value="ERROR" />     <option name="fileExtension" value="go" />     <option name="immediateSync" value="false" />     <option name="name" value="go fmt" />     <option name="output" value="$FilePath$" />     <option name="outputFilters">       <array />     </option>     <option name="outputFromStdout" value="false" />     <option name="program" value="$GoExecPath$" />     <option name="runOnExternalChanges" value="false" />     <option name="scopeName" value="Project Files" />     <option name="trackOnlyRoot" value="true" />     <option name="workingDir" value="$ProjectFileDir$" />     <envs>       <env name="GOROOT" value="$GOROOT$" />       <env name="GOPATH" value="$GOPATH$" />       <env name="PATH" value="$GoBinDirs$" />     </envs>   </TaskOptions>   <TaskOptions>     <option name="arguments" value="-w $FilePath$" />     <option name="checkSyntaxErrors" value="true" />     <option name="description" />     <option name="exitCodeBehavior" value="ERROR" />     <option name="fileExtension" value="go" />     <option name="immediateSync" value="false" />     <option name="name" value="goimports" />     <option name="output" value="$FilePath$" />     <option name="outputFilters">       <array />     </option>     <option name="outputFromStdout" value="false" />     <option name="program" value="goimports" />     <option name="runOnExternalChanges" value="false" />     <option name="scopeName" value="Project Files" />     <option name="trackOnlyRoot" value="true" />     <option name="workingDir" value="$ProjectFileDir$" />     <envs>       <env name="GOROOT" value="$GOROOT$" />       <env name="GOPATH" value="$GOPATH$" />       <env name="PATH" value="$GoBinDirs$" />     </envs>   </TaskOptions>   <TaskOptions>     <option name="arguments" value="run --disable=typecheck $FileDir$" />     <option name="checkSyntaxErrors" value="true" />     <option name="description" />     <option name="exitCodeBehavior" value="ERROR" />     <option name="fileExtension" value="go" />     <option name="immediateSync" value="false" />     <option name="name" value="golangci-lint" />     <option name="output" value="" />     <option name="outputFilters">       <array />     </option>     <option name="outputFromStdout" value="false" />     <option name="program" value="golangci-lint" />     <option name="runOnExternalChanges" value="false" />     <option name="scopeName" value="Project Files" />     <option name="trackOnlyRoot" value="true" />     <option name="workingDir" value="$ProjectFileDir$" />     <envs>       <env name="GOROOT" value="$GOROOT$" />       <env name="GOPATH" value="$GOPATH$" />       <env name="PATH" value="$GoBinDirs$" />     </envs>   </TaskOptions>   <TaskOptions>     <option name="arguments" value="-set_exit_status $FilePath$" />     <option name="checkSyntaxErrors" value="true" />     <option name="description" />     <option name="exitCodeBehavior" value="ERROR" />     <option name="fileExtension" value="go" />     <option name="immediateSync" value="false" />     <option name="name" value="golint" />     <option name="output" value="$FilePath$" />     <option name="outputFilters">       <array />     </option>     <option name="outputFromStdout" value="false" />     <option name="program" value="golint" />     <option name="runOnExternalChanges" value="false" />     <option name="scopeName" value="Project Files" />     <option name="trackOnlyRoot" value="true" />     <option name="workingDir" value="$ProjectFileDir$" />     <envs>       <env name="GOROOT" value="$GOROOT$" />       <env name="GOPATH" value="$GOPATH$" />       <env name="PATH" value="$GoBinDirs$" />     </envs>   </TaskOptions> </TaskOptions>

 

 

 

本文来自于:https://goframe.org/prepare/develop#

上一篇 gf-demos
下一篇 返回列表
Powered by yoyo苏ICP备15045725号-1