Go语言package包

学习笔记

在实际应用中我们不可能把所有的函数放在同一个源文件里,因此我们可以分门别类的把函数放在不同的原文件中,比如说单独建一个工具包。

包是什么

        在程序层面,所有使用相同package包名的源文件组成的代码模块

        在源文件层面就是一个文件夹

在go语言中不允许函数重构,但可以在两个不同的包中定义两个名字相同的函数。

//主函数
package main

//package进行包的声明,建议:包的声明这个包和所在的文件夹同名,并不是强制要求同名
//main包是程序的入口包,一般main函数会放在这个包下

//import "fmt"
//包名是从$GOPATH/src/后开始计算的,使用/进行路径分析
//import "gocode/testproject01/unit5/demo99/crm/dbutils"

//如果有多个包建议一次性导入

import (
	"bao/dbutils"
	"fmt"
)

//"./dbutils" //"GO/src/bao"

func main() {
	fmt.Println("你好这是main函数的执行")
	dbutils.GetConn() //在函数调用的时候前面一定要定位到所在的包
	//GetConn为dbutils包中定义的函数
}
//dbutils包
package dbutils

import "fmt"

func GetConn() { //首字母大写才可以被别的包调用
	fmt.Println("执行了dbutils包下的GetConn函数")
}

 在一个项目中建立两个文件夹,分别命名为main和dbutils,在两个文件夹中分别建立.go文件

main包是程序的入口包,一般main函数会放在这个包下

main函数一定要放在main包下,否则不能编译执行

package 包名

引入包:import“包的路径”(从src后开始)

如果有多个包建议一起引入

在函数引用的时候前面要定义到所在的包

在包中的函数名首字母要大写,不然无法被其他包访问

在同一个包中不能有重复的函数名

包的名字可以和文件夹名字不相同

在同一个目录下的同级文件归属于一个包,同级别的源文件的包声明必须一致

可以给包取别名,取别名后原来的包名就不能使用了

test "bao/dbutils"

 遇到的问题


报错:package src/chapter1/other/pkg1 is not in GOROOT

搜到的解决方法

1、go env -w GO111MODULE=off  #开启go mod管理,同理off就是关闭(不可用,但很多人发的教程都是这么写的,咱也不知道为啥我不能应) 

2、set GO111MODULE=off (可用)再次打开时用set GO111MODULE=on即可

 go mod

可以不在GOPATH文件夹下使用

步骤:

1、在cmd中输入set GO111MODULE=on

2、set GOPROXY=https://mirrors.aliyun.com/goproxy(用的阿里云,其他的我电脑用不了,可能是网速太差)

3、在vscode终端输入 go mod init 项目名称  初始化生成go.mod文件,大多数教程中使用go mod init后面不命名,但是我电脑又有报错

然后就可以直接go run main.go了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值