go语言中包使用的注意事项和细节

1、在给一个文件打包时,该包对应一个文件夹,比如这里的utils文件夹对应的包名就是utils,文件的包名通常和文件所在的文件夹名一致,一般为小写字母。

2、当一个文件要使用其他包函数或变量时,需要先引入对应的包。

(1)方式一:

import "包名"

(2)方式二:

import (

    "包名"

    "包名"

)

(3)package指令在文件第一行,然后是import指令。

(4)在import包时,路径从$GOPATH的src下开始,不用带src,编译器会自动从src下开始引入。

对于下面的文件目录:

包所在的文件目录

导入包的例程为:

import "go_code/chapter06/fundemo01/utils"

$GOPATH在环境变量的系统变量中设置。由下可以看出我们把GOPATH的值设为了"D:\Go-Project",因此当我们执行go程序的import指令时,编译器会自动在D:\Go-Project的src文件夹内向下搜寻。

$GOPATH的设置

3、为了让其他包的文件,可以访问到本包的函数,则该函数名的首字母需要大写,类似其他语言的public,这样才能跨包访问。比如utils.go的

utils.go中Cal函数首字母大写

4、在访问其他函数时,其语法是:

包名.函数名

比如这里的main.go文件中

main函数中使用包中Cal函数实例

5、如果包名较长,Go支持给包取别名,要注意:取了别名后,原来的包名就不能用了。

下图是给包取别名:

给包去别名

此时main函数中的utils.Num1、utils.Cal函数都不能使用,报错显示undefined。

无法用原来的包名来访问函数

将原来的utils包名修改为import中取得别名util后,方可正常使用。

改别名可正常使用

6、在同一包下,不能有相同的函数名(也不能有相同的全局变量名),否则报重复定义。

如下所示,utils文件夹内有两个go文件。utils.go文件内容如下:

utils.go

utils.go中含有Cal函数,若在utils2.go文件中也定义一个同名的Cal函数,如下所示:

utils2.go

可以发现编译器报错了。utils.go和utils2.go同样package utils,是在同一个包下的,不能重复定义。

7、如果你要编译成一个可执行程序文件,就需要将这个包声明为main,即

package main

这就是一个语法规范,如果你是写一个库,包名可以自定义。

注意事项

在$GOPATH的目录下,有如下的文件夹:

$GOPATH目录的文件夹

bin目录存放编译生成的exe文件。

我们打开vscode的终端时,自动在$GOPATH的目录下,如下所示:

vscode终端

我们不需要cd到我们的main文件夹中去,按照规范的编译方法,应做如下操作:

规范的编译方法

这样编译完成之后,$GOPATH的bin目录下就会有生成的demo1.exe文件。

你可能感兴趣的:(go语言中包使用的注意事项和细节)