【Go基础】Go自定义导入包以及Go常用命令

前言

在Go语言入门环境搭建中有两个重要的概念GOPATH和GOROOT,其中GOROOT是我们安装的go路径例如D:\Go,将这个路径设置到环境变量就配置好了GO目录的安装路径了。PATH环境变量就是%GOROOT%\bin路径,如D:\Go\bin路径。
而GOPATH则是我们的工作目录,就是写代码的目录,在环境变量中配置之后,我们编译源代码等生成的文件都会放到这个目录下,这个目录下我们一般会新建三个文件夹:src、pkg、bin

  • src 目录存放的是我们的go源代码,不同工程项目的代码以包名区分。
  • pkg 编译后生成的文件(比如:.a)
  • bin文件夹存放go install命名生成的可执行文件,
    在这里插入图片描述
    如果要修改的话可以直接在cmd执行相应的设置命令如:set GO111MODULE=on,日常开发中我们通常需要自定义导入包,初学go在自定义导入包时被难住的人应该也不在少数,下面将介绍如何自定义导入包。

一、自定义导入包

在src下新建目录结构如下,此次测试主要涉及UserImport文件夹下的测试(主要是测试,不在意细节)
在这里插入图片描述
Hello.go:

package apk //自定义

import "fmt"

func Hello(name string) {
	fmt.Println("apk----name:", name)
}

Service.go:

package apk //自定义

import "fmt"

func Register(name string) {
	maps := make(map[string]int)
	maps[name] = 2
	fmt.Println(maps[name])
}

testApk.go:

package main

import "UserImport/apk"

func main() {
	apk.Hello("xiaozhang")
	apk.Register("dingli")
}

此时我们会发现在testAp.go中导入是报错的,我们需要在UserImport下执行一次go mod init命令
在这里插入图片描述
执行完之后在UserImport下就会多一个文件go.mod,打开为如下内容:
在这里插入图片描述

此时发现我们的导入不会报错了,可直接执行使用。另一个需要注意的事项是暴露方法的方法名称首字母需要大写,因为go根据方法字段首字母大小写判断方法的可见性,这是很容易犯的错。

总结下来就几个步骤:

  • 设置变量GO111MODULE为on
  • go mod init + projectname:初始化mod

其中go.mod称为模块根,定义了它所在目录为一个模块,优势是不受GOPATH的限制,可以在任意的文件夹下创建工程,在GoLand中使用go mod模式创建工程,会自动生成go.mod文件,然后就可以正产编译包了。

二、Go mod的好处

在开发中,我们可能会配置多个GOPATH,每个project使用不同的GOPATH。多个project会导致多个GOPATH目录,而go优先使用第一个GOPATH目录,会导致编译冲突,解决办法就是使用如下目录将多个project或工具组件都放在GOPATH的src目录下,此时GOBIN可以为空。GOPATH目录和GOPATH下的src不应该添加到源代码管理中,而是各个project目录myApp1、myApp2、myApp3各自独立进行源代码管理:

goWorkSpace     // goWorkSpace为GOPATH目录
  -- bin
     -- myApp1  // 编译生成
     -- myApp2  // 编译生成
     -- myApp3  // 编译生成
  -- pkg
  -- src
     -- common 1
     -- common 2
     -- common utils ...
     -- myApp1     // project1
        -- models
        -- controllers
        -- others
        -- main.go 
     -- myApp2     // project2
        -- models
        -- controllers
        -- others
        -- main.go 
     -- myApp3     // project3
        -- models
        -- controllers
        -- others
        -- main.go 

三、Go常用命令

go build :编译源码文件,go install 生成可执行文件,go clean:清除相关应用包,go run 运行代码

golang 的go build、go install 命令都是可生成可实行文件,了解它们的小区别以选择适合自己的。

go install和go build在没有参数时运行,都会在当前目录下编译,如果当前目录是软件主程序(package main)

  • go build会生成可实行文件放在当前目录中
  • go install则会把它放到$GOPATH/bin中。

go install还会把导入的依赖包编译到$GOPATH/pkg,并缓存,如果包未做更改,下次编译则直接使用缓存。go build命令加参数-i也能达到go install的效果

如果当前目录是非主包,则go install直接把编译结果安装到$GOPATH/pkg。如果项目很大,每次编译都要花很长时间,则建议使用go install来编译,充分利用它对依赖包的缓存功能。

更多go mod相关知识可以参见:怎么配置golang项目module模块?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童话ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值