GOLANG导入自己写的 包/函数 | 您所在的位置:网站首页 › go引入本地包 › GOLANG导入自己写的 包/函数 |
类比C/C++使用头文件导入带有函数声明的*.h/*.hpp文件不同,go语言对于包的定义更加方便,以golang为例,go语言有着自己的GOPATH目录结构,即为在工程下有三个文件夹,分别是bin、pkg、src 首先在golang下新建完自己的go工程以后,在依次新建bin、pkg、src目录
在src目录下新建一个我们自己定义的tools包 并且在tools包中新建一个go文件用于写咱们自己创建的的函数 注意:go语言使用package来说明文件属于哪一个包 定义了一个hello的无参函数在print.go中 注:这个方法有问题,等一下会做说明 我们就定义好了自己写的一个包以及方法,接下来我们可以在这个工程中的任何位置调用使用它,比如我在src下,又建立了一个tools的测试类toolsText,并且写了一个测试函数demo 让我们导入刚才写的tools包 在实现包中的方法 可是此时程序报错,提示无法解析我们写的hello方法,问题出在哪里呢? 命名 go语言和c语言不同, 命名如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 private ) 所以如果我们想要写方法供包外的函数使用,我们需要将首字母大写,否则小写开头的函数只能在包内部使用。 解决方法 将之前写的hello方法改名为Hello方法即可 测试用例也需要更改 现在函数就不报错了,可以正常使用,运行一下 成功在其他的包内运行在tools中写的函数 呢么如果在tools目录外,可以构件tools包中的函数吗? 让我们来测试一下 我们在src下创建了另一个目录notools,并且创建了一个叫notools的go文件 在其中输入了如下内容 注:package所命名的包为tools,也就是说这个函数仍然属于tools包 回到demo中直接使用tools调用它
报错了,依旧是函数未解析,为什么呢? 因为Add这个函数是我们定义在tools包,notools目录下的, 所以import命令我们不是直接导入具体的包而是存放包的目录, 呢么我们怎么样才能正确使用notools目录下的tools包呢? 让我们导入notools目录
Add方法依旧报错,为什么呢? 因为当前引入了两个tools包,导致文件冲突,我们改变包名或者删掉之前的”tools目录“就可以运行了 删除tools后 程序正常运行, |
CopyRight 2018-2019 实验室设备网 版权所有 |