七叶笔记 » golang编程 » Golang基础——引用外部函数

Golang基础——引用外部函数

在Golang的项目开发中,为了逻辑清晰会需要把不同功能的模块区分开,所以在构建项目之初就会划分出不同的文件。

golang开发的文件需要放在$GOPATH/src的路径下,至于为什么要放在这个路径下在之前发表过的《Golang基础—— HelloWorld 》有很详细的说明,在这里就不赘述了。

golang语言调用外部函数是通过包(package)来定位的。一个文件路径下只允许存在一个包,这里待会儿会解释。

举个例子:

一个项目,项目名称叫做project,这个项目的文件路径是$GOPATH/src/project,project目录下有一个main.go文件和一个 test 文件目录,test文件目录下的有一个test.go文件。这里main.go文件要调用test.go文件里面的TestFunc()方法。在这里有几点需要注意,那就是test文件目录,test.go文件,还有TestFunc()方法。

先上代码:

main.go文件

test.go文件

  1. package test

  2. import “fmt”

  3. func init() {

  4. fmt.Println(“init …”)

  5. }

  6. func TestFunc() {

  7. fmt.Println(“test function …”)

  8. }

先捋清楚思路,main.go是整个项目的入口文件,main.go文件里面的main函数是整个项目的入口函数。都是从main函数开始的。main函数中要调用test文件目录下的test.go文件中的TestFunc()方法。

先从main.go文件开始

前面的在之前发表的《Golang基础——HelloWorld》都有,这里直接从第五行

import (

“fmt”

“project/test”

)

中的”project/test”这里是最关键的,着这里引入的就是TestFunc()方法所在的包。而这里的test应该是文件路径test还是test.go?

答案是是文件路径test。这就跟之前所说的为什么要在$GOPATH/src下创建项目。是通过文件目录来确定包的,test文件路径下的所有.go文件里表明的package 也必须是test,就像test.go文件的第一行。之前提出的问题一个文件路径下只允许存在一个包,这里的只允许存在一个包是指这个文件目录下的所有.go文件中的package标明必须一致。是所有的.go文件,不包括文件目录。例如test文件目录下又有一个文件目录test1,那么这就意味着这又是一个新的包。在main.go中应该是这样引入:

import(

“project/test”

“project/test/test1”

)

这里的test和test1是两个完全不同的包。


在test.go文件里有一个init函数,这是go语言的初始化函数。在上面的调用中是不执行初始化函数的。如果要执行init函数,需要在引入test包前面加_(下划线)。

import(

_ “project/test”

)

这样在引入test包的时候就会执行初始化函数。

相关文章