今天,灵感一现:不能一个文件干到底吧,那要是工程大了怎么办?

答案很简单,“包”啊

GO里的包,看起来很简单,但又不简单

一开始,我想当然的以为就是include 路径一样的问题

事实是,GO以GOPATH环境变量来管理的,其实,从你在应用标准包根本没有路径一说,就应该能猜到这个该死的结果了

好了,下边,我们以一个例子来说明,避免网上那些看似很仔细的说,但就是怎么也说不明白的症结吧!

一 找到你的GOPATH

echo $GOPATH
/root/gopkg //我的位置在这里,你自己的肯定不一样吧,当然,要是你跟我设置一样,那就是这个了

二 我们自己库源码要放入的位置

$GOPATH/src/other

三 gin-1.go , gin-2.go源码

//gin-1.go

package other

import (
  "fmt"
)

func Show1() {
  fmt.Println("1 is ok")
}

//gin-2.go

package other

import (
"fmt"
)

func Show2() {
fmt.Println("2 is ok")
}

四 编译与安装我们的other库

在ohter 父目录下执行

go build other

go install other

然后在$GOPATH/pkg/linux_amd64下会找到们生成库other.a

五 祝贺你,现在你可以用other这个包了

//gin-main.go

package main

import (
  "other"
)

func main() {
  other.Show1()
  other.Show2()
}

//运行

go build gin-main.go

./gin-main
1 is ok
2 is ok

看,我们成功调用了自定义的GO库

开心吧?哈哈哈

Finally:

这个问题,在实际工程开发中意义还是十分巨大的,希望你能理解并应用

当然,别问我,为何你说的这么清楚?网上却找不到这样的博文

应该去问,那些人为何说不明白,哈哈哈哈!

Golang package的更多相关文章

  1. 翻译下 golang package time

    # 关于 `package time` 个人体会:"wall clock" 可以理解为就是实际的时钟,而 "monotonic clock" 则是程序内部的时钟 ...

  2. Golang package轻量级KV数据缓存——go-cache源码分析

    作者:Moon-Light-Dream 出处:https://www.cnblogs.com/Moon-Light-Dream/ 转载:欢迎转载,但未经作者同意,必须保留此段声明:必须在文章中给出原文 ...

  3. golang package log

    package main import ( "log" "os" ) var logger *log.Logger func main() { file, er ...

  4. golang (2) package

    综述 golang package是基本的管理单元,package是golang最基本的分发单位和工程管理中依赖关系的体现. 每个golang源代码文件开头都拥有一个package声明,表示该gola ...

  5. golang 中的指针

    # golang 中的指针 看了一篇[文章](http://blog.51cto.com/steed/2341409),写的很好.这里略微总结下重点: 1. 地址值.unsafe.Pointer.ui ...

  6. golang 自定义importpath

    golang 的包导入和其他语言有好多不一样的地方,以下是一个自定义的导入 golang 自定义导入说明 一个官方的说明 比较简单,就不翻译了,主要是说我们可以通过添加meta 数据告诉包如何进行加载 ...

  7. golang kafka client

    针对golang的 kafka client 有很多开源package,例如sarama, confluent等等.在使用sarama 包时,高并发中偶尔遇到crash.于是改用confluent-k ...

  8. golang (4) golang 操作mongdb

    1. 数据按照时间聚合操作 1.1 正常的数据结构 { "_id" : ObjectId("5cac8d7b1202708adf5d4b64"), " ...

  9. go package的理解

    golang package是基本的管理单元, 同一个package下面,可以有非常多的不同文件,只要 每个文件的头部    都有 如 "package xxx" 的相同name, ...

随机推荐

  1. {03--CSS布局设置} 盒模型 二 padding bode margin 标准文档流 块级元素和行内元素 浮动 margin的用法 文本属性和字体属性 超链接导航栏 background 定位 z-index

    03--CSS布局设置 本节目录 一 盒模型 二 padding(内边距) 三 boder(边框) 四 简单认识一下margin(外边距) 五 标准文档流 六 块级元素和行内元素 七 浮动 八 mar ...

  2. [No0000B1]ReSharper操作指南2/16-ReSharper食谱与特定于域的教程

    自动导入名称空间 有关更多信息,请参阅导入缺少命名空间. 每当您使用未添加using语句的命名空间中的类型时,ReSharper会为您提供在您所在文件的顶部添加相应的语句.这由在所使用的类型上方显示的 ...

  3. hdu-6415 Rikka with Nash Equilibrium dp计数题

    http://acm.hdu.edu.cn/showproblem.php?pid=6415 题意:将1~n*m填入一个n*m矩阵 问只有一个顶点的构造方案. 顶点的定义是:某数同时是本行本列的最大值 ...

  4. influxdb服务器 relay

    https://www.influxdata.com/time-series-platform/influxdb/ https://www.xusheng.org/blog/2016/07/30/pe ...

  5. get post header获取数据方方法

    /** * get方式获取数据 * @param $url * @param $data * @return bool|string */public function methodGet($url, ...

  6. oracle执行计划相关

    执行计划相关 根据Operation缩进来判断,缩进最多的最先执行:(缩进相同时,最上面的最先执行) 同一级如果某个动作没有子ID就最先执行 同一级的动作执行时遵循最上最右先执行的原则 TABLE A ...

  7. SQL DATE_FORMAT() 函数

    参照原文:https://blog.csdn.net/moakun/article/details/82290387 DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据 MySQL 使 ...

  8. MyEclipse中JDK运行环境和编译环境的设置

    一.设置myEclipse中新项目使用的JDK 1.运行环境   [Window]->[Preferences]->[Java]->[Installed JREs] 步骤:Add-- ...

  9. java中获取字母和数字的组合

    package com.ccytsoft.wkc.util; import java.util.ArrayList; import java.util.List; import java.util.R ...

  10. 使用natapp将本地服务映射到外网

    1.进入https://natapp.cn注册并登陆,然后下载客户端 2. 3. 4.打开客户端开启映射