Golang package

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

答案很简单,“包”啊

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:

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

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

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

转载于:https://www.cnblogs.com/woodzcl/p/7560736.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix通过JMX监控Tomcat及一些报错

软件包下载地址:Wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.11/bin/apache-tomcat-7.0.11.tar.gz#安装jdk:Mkdir /usr/lib/jvmTar xf jdk-7u45-linux-x64.gz -C /usr/lib/jvm#在profile追加以下内容 Vim /etc/profileJAVA_HOME"/usr/lib/jvm/j…

文件的输入/输出操作

10.1 文件I/O操作概述 在Linux系统中,文件I/O操作可以分为两类,一类是基于文件描述符的I/O操作,另一类是基于数据流的I/O操作。 10.1.1 文件描述符简介 在文件操作一章中,也经常提到文件描述符这个概念。所谓文件描述符&#xff0…

KVM(多电脑切换器)

KVM:Keyboard Video Mouse的缩写。KVM 交换机通过直接连接键盘、视频和鼠标 (KVM) 端口,让您能够访问和控制计算机。KVM 技术无需目标服务器修改软件。这就意味着可以在 Windows 的 BIOS 环境下,随时访问目标计算机。KVM 提供真正的主板级别访…

git 仓库操作

一。git 仓库从远程clone 首先要建立一个本地空目录文件比如 RuntimeJsonModel,然后: 1. git init 2. git clone https://github.com/GuoZhiQiang/RuntimeJsonModel.git 此时,已经 从远程 clone 了一份文件。如果 把一些工程需要的其它文件&…

SVN设置必须锁定

SVN是一个开放源代码的版本控制系统,相信做开发的基本上都用过,这里就不多介绍了。团队协作开发时常常会出现提交的文档互相冲突的问题,这里给大家介绍一下给SVN文件设置必须锁定的方法,当然你也可以对冲突文档进行合并处理&#…

C++入门经典-例8.1-类的继承

1:继承是面向对象的主要特征(此外还有封装和多态)之一,它使得一个类可以从现有类中派生,而不必重新定义一个新类。继承的实质就是用已有的数据类型创建新的数据类型,并保留已有数据类型的特点,以…

TOJ 2857 Stockbroker Grapevine

描述 Stockbrokers are known to overreact to rumours. You have been contracted to develop a method of spreading disinformation amongst the stockbrokers to give your employer the tactical edge in the stock market. For maximum effect, you have to spread the r…

input type='file' 上传文件时显示文件名及上传进度

https://blog.csdn.net/qq_36687640/article/details/78551217 1、input typefile 上传文件时显示文件名及上传进度 <input type"file" οnchange"showPreview(this)"> <p class"show"></p> <script> function show…

有意思的PHP代码块-面试经典_无需整理

为什么80%的码农都做不了架构师&#xff1f;>>> 不使用PHP自带反转函数&#xff0c;将字符串反转。//不用自带函数将其反转 方法一 $str "This is PHP"; $strArr explode( ,$str); $count count($strArr)-1; for($i$count;$i>0;$i--){$revStr . $s…

iOS开发之UITableView中计时器的几种实现方式(NSTimer、DispatchSource、CADisplayLink)

最近工作比较忙&#xff0c;但是还是出来更新博客了。今天博客中所涉及的内容并不复杂&#xff0c;都是一些平时常见的一些问题&#xff0c;通过这篇博客算是对UITableView中使用定时器的几种方式进行总结。本篇博客会给出在TableView中使用NSTimer或者DispatchSourcer中常见的…

html5爱心表白

http://js.itivy.com/jiaoben1892/index.html http://bangpai.sourceforge.net/main.html转载于:https://www.cnblogs.com/h07061108/p/html5_love.html

CentOS查看每个进程的网络流量

所需工具nethogs 安装&#xff1a;yum install -y nethogs 使用&#xff1a;nethogs eth0 sudo nethogs -s //按接收流量大小排序 如上图&#xff0c;PID一列就是进程的PID&#xff0c;PROGRAM就是显示进程或连接双方的端口号&#xff0c;前面红框是服务器的IP:端口&#xff0…

sqlserver中 事物 索引及视图

事务1、什么是事务事务是一个不可分割的工作逻辑单元&#xff0c;它包含了一组数据库的操作命令&#xff0c;并且所有命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即要么都执行&#xff0c;要么都不执行&#xff12;、事务的4个属性(1)、原子性(Atomicity)&#…

ubuntu下如何设置apache的启动和重启

ubuntu下如何设置apache的启动和重启 1、启动aoache服务 sudo /etc/init.d/apache2 start 2、重启apache服务 sudo /etc/init.d/apache2 restart 3、停止apache服务 sudo /etc/init.d/apache2 stop _______________________________ 注&#xff1a;a、这里的sudo可要可不要…

转:Java反射教程

原文来自于&#xff1a;http://www.importnew.com/9078.html 什么是反射&#xff1f;反射有什么用处&#xff1f; 1. 什么是反射&#xff1f; “反射&#xff08;Reflection&#xff09;能够让运行于JVM中的程序检测和修改运行时的行为。”这个概念常常会和内省&#xff08;Int…

浅入浅出数据结构(20)——快速排序

正如上一篇博文所说&#xff0c;今天我们来讨论一下所谓的“高级排序”——快速排序。首先声明&#xff0c;快速排序是一个典型而又“简单”的分治的递归算法。 递归的威力我们在介绍插入排序时相比已经见识过了&#xff1a;只要我前面的队伍是有序的&#xff0c;我就可以通过向…

django 1.8 官方文档翻译: 1-2-1 编写你的第一个Django应用,第1部分

编写你的第一个 Django 程序 第1部分 让我们通过例子来学习。 在本教程中&#xff0c;我们将引导您创建一个基本的投票应用。 它将包含两部分&#xff1a; 一个公共网站&#xff0c;可让人们查看投票的结果和让他们进行投票。一个管理网站&#xff0c;可让你添加、修改和删除投…

Newtonsoft.json中 linq to json 和序列化哪个快?

Newtonsoft.json是最常用的json序列化组件&#xff0c;当然他不是最快的&#xff0c;但是是功能最全的。。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using Newtonsoft.Json.Linq; using Newtonsoft…

ubuntu 下 php 安装 zip

linux(ubuntu/centos)、windows安装php-zip扩展 PHP安装zip拓展&#xff0c;以及libzip安装问题