GOLAND建立HELLOWORLD项目


首先去官网下载go的安装包

安装GO

1 安装

安装其实没有什么好说的,我们一路next,采用默认安装,安装在C:\Go下。在安装的时候,会自动在系统环境变量里新建一个 GOROOT 环境变量,还会自动把 PATH 环境变量设置好

关于工作空间

GO代码必须在工作空间内。
工作空间是一个目录,其中包含三个子目录:
src ---- 里面每一个子目录,就是一个包。包内是Go的源码文件
pkg ---- 编译后生成的,包的目标文件
bin ---- 生成的可执行文件。
这里,我们建立D:\GOBUILD\GOPATH(可以不是GOPATH, 任意名字都可以)的文件夹,
然后再建立三个子文件夹(子文件夹名必须为src、pkg、bin)。

添加GOPATH环境变量

安装包不会帮我们添加的,就是这个GOPATH环境变量了。
我将变量值设为:【D:\GOBUILD\GOPATH

关于goroot,gopath,gobin的作用:

goroot一般是全局性的,gopath与gobin,通过环境变量设置可以设置全局gopath,在任意路径下执行go build,会优先查找全局gopath下的src目录内的go文件进行编译。go get命令也会将go编译过程中所需要的依赖包下载到gopath里(package目录),编译生成的exe文件,默认放在gopath的bin目录下。
用goland工具建立的项目时,可以为每一个Project配置gopath目录,这个项目在编译时,如果按照package编译,会查找本项目内的package进行编译。

GOROOT

go的安装目录(/usr/local/go)

GOPATH

go工作环境中常常用到的一个很重要的环境变量。

GOPATH的值可以是一个目录的路径,也可以是包含多个目录的路径,每个目录都代表Go语言的一个工作区(workspace)。一般情况下,为了分离自己与第三方的代码,我们会设置两个或更多的工作区。当有多个GOPATH时,默认会将go get的内容放在第一个目录下。

工作区用于放置Go语言的源码文件,以及安装(install)后的归档文件(archive file,也就是以".a"为扩展名的文件)和可执行文件(executable file)。

Go语言项目在其生命周期内的所有操作(编码,依赖管理,构建,测试,安装等)基本上都是围绕GOPATH和工作区进行的。

Go 语言提供的很多工具都是在 GOPATH 和工作区的基础上运行的,例如go build,go install,go get。

GOPATH约定有三个子目录
src 存放源代码
pkg 存放编译后生成的文件
bin 编译后生成的可执行文件

GOBIN

不允许设置多个路径,可以不设置。为空时遵循约定由于配置原则,可执行文件放置各自GOPATH目录的bin文件夹中。

当设置多个GOPATH时,可以用“export PATH= P A T H : PATH: PATH:{GOPATH//😕/bin:}/bin”把每个GOPATH下的bin都加入到PATH中。

开始 HelloWorld

新建项目(应用包)。

1、一般来说,建议包名和目录名保持一致,所以,在src文件夹下,按照你想要创建的包名,组织文件夹路径。这里,我们在D:\GOBUILD\GOPATH\src下面,建立hello文件夹
关于包,根据本地测试得出以下几点:
文件名与包名没有直接关系,不一定要将文件名与包名定成同一个。
文件夹名与包名没有直接关系,并非需要一致。
同一个文件夹下的文件只能有一个包名,否则编译报错。

2、新建go代码
D:\GOBUILD\GOPATH\src\hello下面,建立helloworld.go文件,并编辑,加入如下代码:

package main
import(
 "fmt"
 "time"
)

func main() {
 fmt.Println("Hello world!")
 duration := time.Duration(10)*time.Second
 time.Sleep(duration)
}

3、编译生成go程序
打开命令行,在任意文件路径下,运行:
go install hello
也可以进入项目(应用包)的路径,然后运行:
go install
在编译生成go程序的时,go实际上会去两个地方找程序包:
GOROOT下的src文件夹下,以及GOPATH下的src文件夹下。

在程序包里,自动找main包的main函数作为程序入口,然后进行编译。
如果想编译不在全局gopath中的项目helloworld,直接用命令行在helloworld项目文件目录helloworld\src\main下执行:go install helloworld
4、运行go程序
在D:\gopath\bin\下,会发现出现了一个hello.exe的可执行文件,双击运行:
OK!成功!运行10秒后,程序自动退出~

go install 和go build

go install/build都是用来编译包和其依赖的包。
区别:
go build只对main包有效,在当前目录编译生成一个可执行的二进制文件(依赖包生成的静态库文件放在 G O P A T H / p k g ) 。 g o i n s t a l l 一 般 生 成 静 态 库 文 件 放 在 GOPATH/pkg)。 go install一般生成静态库文件放在 GOPATH/pkggoinstallGOPATH/pkg目录下,文件扩展名a.只对main包有效,在当前目录编译生成一个可执行的二进制文件(依赖包生成的静态库文件放在 G O P A T H / p k g ) 。 g o i n s t a l l 一 般 生 成 静 态 库 文 件 放 在 GOPATH/pkg)。 go install一般生成静态库文件放在 GOPATH/pkggoinstallGOPATH/pkg目录下,文件扩展名a.如果为main包,则会在 G O P A T H / b i n 生 成 一 个 可 执 行 的 二 进 制 文 件 。 , 则 会 在 GOPATH/bin 生成一个可执行的二进制文件。,则会在 GOPATH/binGOPATH/bin 生成一个可执行的二进制文件。

JetBrains GoLand建立helloworld

安装JetBrains GoLand,过程略
配置goland
文件(file)->配置(settings)->go

  1. 设置goroot,这个是go的安装目录
  2. 设置gopath:全局global gopath会自动读取环境变量 ,index entire GOPATH是让项目可以共用全局gopath中的package包,我一般去掉勾选,因为我习惯每个项目单独一个环境,不与其他项目公用。
  3. project gopath,设为新建项目的目录。如果本项不设置,将来编译时无法按照Package编译
  4. build tags,设置编译目标

新建项目HelloWorld.

新建项目HelloWorld,位置可以放在gopath的src中。
项目下新建Hello.go文件,代码同上:

package main
import(
 "fmt"
 "time"
)

func main() {
 fmt.Println("Hello world!")
 duration := time.Duration(10)*time.Second
 time.Sleep(duration)
}

运行(run)菜单->运行->编辑配置
左上+号,go build
在这里插入图片描述
一共有三种配置,每种的设置是不一样的,

第一种是directroy,即编译目录:

在这里插入图片描述
在这里插入图片描述
按目录编译要求指定目录下要有main包声明和main函数,否则无法编译。

第二种是编译package

这种要求在goland中设置project gopath:
file->settings->Go->GOPATH->PROJECT GOPATH中添加当前项目工程的路径。
运行,编辑配置,新增go build配置,这里package path要设成helloworld项目名,就是要求软件在本项目中找文件进行编译,输出目录随意,一般设为项目的bin目录
运行,编译
在这里插入图片描述
按package编译不要求有main包声明,可以声明别的包名,也可以不放在main文件中,但要有main函数

第三种,按文件编译

在这里插入图片描述
按文件编译,go文件必须放在包名main文件夹中,指定要编译的文件,此处可以编译多个文件,但必须有一个带main函数
编译完成,运行即可

关于 GO MODULE

GO MODULE不再受GOPATH的限制可以自由编译和包管理。
(https://goframe.org/prepare/gomodule)
Golang 的包管理一直被大众所诟病的一个点, 在 1.5 版本之前,所有的依赖包都是存放在 GOPATH 下,没有版本控制。这个类似 Google 使用单一仓库来管理代码的方式。这种方式的最大的弊端就是无法实现包的多版本控制,1.5 版本推出了 vendor 机制。go build 的时候会先去 vendor 目录查找依赖,如果没有找到会再 GOPATH 目录下查找。1.9 版本推出了实验性质的包管理工具 dep,1.11 版本推出 modules 机制,简称 mod。modules 的原型其实是 vgo
modules 在 Go 1.13 的版本下是默认开启的。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值