goLang引入自定义包的方法
看完golang的基本语法后,为了模块化编程,试用了下golang的包管理,结果真踩了几个坑,总结一下吧。
一. 设置$GOPATH环境变量
golang和C或php不一样,不会自动查找当前路径下的文件,必须先在$GOAPTH里添加自己工程的路径;
二. 自定义包里面对外提供的API函数,首字母必须大写
如:func api() string {return “hello api!”}则不能被包外的函数检测到;
应改为:func Api() string {return “hello api!”}
三. 包的编译和安装
包的.go文件必须存放在一个独立的文件夹下(如test)。
然后对test文件夹使用 go build 和 go install 命令:之后在$GOPATH下添加生成pkg文件夹,文件夹下则生成test.a文件(因此,包文件的父文件夹名最后和包名一致)
四. 包的使用
生成包的名字和包的真实名字可以不一致;
如目录结构如下:
project >src >test >my.go main.go >pkg >XXXXXX >test.a
my.go的代码如下:
package my func Test() string{ return "my.test"}
main.go的代码如下:
package my import( "fmt" "test" ) func main(){ fmt.println(my.Test()); //可见这里使用“my”和import “test”不一致; }
以上这篇goLang引入自定义包的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Go语言之自定义集合Set
一.Go语言实战--自定义集合Set 在Go语言中有作为Hash Table实现的字典(Map)类型,但标准数据类型中并没有集合(Set)这种数据类型.比较 Set 和 Map 的主要特性,有类似特性如下: 它们中的元素都是不可重复的. 它们都只能用迭代的方式取出其中的所有元素. 对它们中的元素进行迭代的顺序都是与元素插入顺序无关的,同时也不保证任何有序性. 但是,它们之间也有一些区别,如下: Set 的元素是一个单一的值,而 Map 的元素则是一个键值对. Set 的元素不可重复指的是不能存在
-
Golang中的自定义函数详解
不管是面向过程的编程,还是面向对象的编程,都离不开函数的概念,分别是,参数,函数名,返回值.接下来我们看看Go语言在这三个方面是做怎么操作的吧. 参数 谈到参数,我们在写函数或者是类中的方法的时候都需要考虑我们应该传递怎样的参数,或者是是否需要参数. 参数首先分为无参函数有参.无参也就是没有参数,也就不用写了. 有参 func functionTest() { # 小括号内就是用来放参数的 # 函数体内 } Go语言是强数据类型的语言,参数是要指定类型的不然就报错.func 是函数的声
-
golang对自定义类型进行排序的解决方法
前言 Go 语言支持我们自定义类型,我们大家在实际项目中,常常需要根据一个结构体类型的某个字段进行排序.之前遇到这个问题不知道如何解决,后来在网上搜索了相关问题,找到了一些好的解决方案,此处参考下,做个总结吧. 由于 golang 的 sort 包本身就提供了相应的功能, 我们就没必要重复的造个轮子了,来看看如何利用 sort 包来实现吧. sort包浅谈 golang中也实现了排序算法的包sort包,sort 包 在内部实现了四种基本的排序算法:插入排序(insertionSort).归并排序
-
goLang引入自定义包的方法
看完golang的基本语法后,为了模块化编程,试用了下golang的包管理,结果真踩了几个坑,总结一下吧. 一. 设置$GOPATH环境变量 golang和C或php不一样,不会自动查找当前路径下的文件,必须先在$GOAPTH里添加自己工程的路径: 二. 自定义包里面对外提供的API函数,首字母必须大写 如:func api() string {return "hello api!"}则不能被包外的函数检测到: 应改为:func Api() string {return "h
-
golang import自定义包方式
1.初探 刚开始接触go时,以为import自定义包与Java工程类似,在非GOPATH的路径中新建了一个go项目HelloGo,如下: 接下来,利用beego的bee工具新建了另一个项目helloapi,如下: 现在,想在helloapi项目中调用HelloGo项目的函数,通过import引入"HelloGo",编辑器中一直提示无法引用,即使把HelloGo添加到左下角的GOPATH[helloapi]中,也没有效果. 具体如下: 问题出在HelloGo项目的路径上,因为其不在系统定
-
Android项目中引入aar包的正确方法介绍
目录 一.Android项目中引入aar包的方法 二.Android导入jar包 补充:Android 引入aar包后,应用图标改变了 总结 一.Android项目中引入aar包的方法 我在使用高德地图的sdk的时候,选择用引入aar包的方式,然后按照网上的教程引入.但是一直报错,我很懵逼. 这是教程 1.在build.gradle中的android{}外层添加 repositories { flatDir { dirs 'libs' } } 2.将aar包添加到项目的libs文件夹下 3.在d
-
python 制作自定义包并安装到系统目录的方法
python 中的包的概念跟c++中的namespace很相似,在大型的工程开发中,多个开发人员很容使用相同的函数名,为了避免相同函数名带来的问题,就引入了包的概念. 在看别人写的程序中经常看到形如"from xx import yy"xx就是包 制作一个本地使用的包 建立一个文件夹并命名为dl,文件夹名"dl"就是我们的包名,在文件夹内部新建一个"__init__.py"(注意init左右两边都是两个底线符号),在文件夹下添加自己的模块即可,代
-
python导包的几种方法(自定义包的生成以及导入详解)
python是一门灵活的语言,也可以说python是一门胶水语言,顾名思义,就是其可以导入各类的包,python的包可以说是所有语言中最多的.当然导入包大部分是为了更快捷,更方便,效率更高.对于刚入门的python爱好者来说最初接触的应该是import直接导入包的方式,例如 import time,就是导入了python的time包,这个包中的方法可以处理大部分我们项目中遇到的关于时间的问题. 下面我会详细介绍几种导入包的方式(在开发过程中绝对够用)以及怎样把其他文件夹中的python模块生成我
-
如何使用PyCharm引入需要使用的包的方法
在学习python的时候,被推荐了使用PyCharm这款IDE,但是在import包的时候却发生了问题- -无法引入,但是明明通过了pip 进行模块的加载,百度之后,了解到,在这款IDE中,要导入包,需要手动进行引入.如下图所示 首先在file中找到settings 顺带一下,如果有的同学是第一次接触这款IDE,可能对与皮肤颜色不太了解,其实也是在settings中进行设置的,而且该公司旗下的其他产品如IDEA基本都是在此处进行界面的配置,(别人我不懂,我反正用了觉得比白底的舒服很多,感觉应该对
-
两个jar包下相同包名类名引入冲突的解决方法
有时候引入的jar包中的包名类名与其他jar包中的包名类名相同,导致程序在编译或运行的时候无法正确引用想要的类, 解决方法就是去掉其中不需要的那个jar包 有一个项目下需要用到OpenCV和javacv,但是javacv中已经包含了另一个版本的的openCV,这与我们需要的OpenCV版本不一致, 但是编译和运行的时候程序引入的是我们不需要的版本 一.查看maven树,以idea为例 找到javacv中的OpenCV项,双击 找到在javacv中OpenCV的坐标 2.修改pom文件 到此这篇关
-
golang中time包之时间间隔格式化和秒、毫秒、纳秒等时间戳格式输出的方法实例
目录 获取当前时间的年.月.日.时.分.秒的方法如下: 获取从1970到现在经过的时间的方法如下: 时间间隔格式化输出方法: 总结 获取当前时间的年.月.日.时.分.秒的方法如下: // 获取当前时间 now := time.Now() // 当前时间的年.月.日.小时.分钟.秒和纳秒都可以通过现有接口直接获取 year := now.Year() month := now.Month() day := now.Day() hour := now.Hour() minute := now.Min
-
Android实现在ServiceManager中加入自定义服务的方法详解
本文实例讲述了Android实现在ServiceManager中加入自定义服务的方法.分享给大家供大家参考,具体如下: 当我们要使用android的系统服务时,一般都是使用Context.getSystemService方法.例如我们要获取AudioManager,我们可以: AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 获取的服务,其实是在ServiceManager中注册的Binder服务,
随机推荐
- vue2利用Bus.js如何实现非父子组件通信详解
- Struts中action线程安全问题解析
- 在X分钟内学会C#的入门简明教程
- 全面剖析.Net环境下的缓存技术
- js获得页面的高度和宽度的方法
- javascript下搜索子字符串的的实现代码(脚本之家修正版)
- MYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)修复方法
- 利用一个简单的例子窥探CPython内核的运行机制
- 利用javascript的面向对象的特性实现限制试用期
- js 绑定键盘鼠标事件示例代码
- SQL Server 实现数字辅助表实例代码
- document.write的几点使用心得
- script的async属性以非阻塞的模式加载脚本
- Java通过Fork/Join优化并行计算
- DataTable数据导出成Excel文件的小例子
- Android中监听Home键的4种方法总结
- Android开发-之五大布局详解
- Python采集代理ip并判断是否可用和定时更新的方法
- 详解linux正则表达式(基础正则表达式+扩展正则表达式)
- Qt实现闹钟小程序