首页 > 其他分享 >【5.0】Go语言基础之包的使用

【5.0】Go语言基础之包的使用

时间:2023-11-11 21:11:51浏览次数:28  
标签:5.0 GOPATH 之包 package 这所 go user Go

【一】包的作用

  • 为了便于组织代码,同一种类型的代码,写在同一个包下,便于管理

【二】定义包的步骤

【1】新建一个文件夹

【2】内部有很多go文件

image-20231111110108007

【3】go文件的第一行声明包名

  • 在每个go文件的第一行,都要声明包名,并且包名必须一致
package user

【4】在一个文件夹下只能有一个包(同级)

  • 在一个文件夹下只能有一个包(同级)
    • user 下的 info/loacation/school 每一个文件中的第一句都是一个包下
package user

【5】同一个包下,变量和函数共享

(1)变量和函数共享

  • 在同一个包下,变量和函数都是共享的(一个包相当于一个go文件)
  • location 内的变量 在 school 中不需要导入就可以直接使用
  • info.go
package user

var name string = "DreamCity"
var age int = 100
  • school.go
package user

import "fmt"

func showInfo() {
	fmt.Println("这所学校的名字是 :>>>>", name, "这所学校的年龄是 :>>>>", age)
}

(2)在一个包下,不能重复定义变量和函数

  • location.go
package user

/*

*/

// 'showInfo' redeclared in this package
// showInfo 不能在这个包被重复声明
func showInfo()  {
	
}

【6】除了main包,其他都是用来被导入使用的

  • 无论是函数,还是变量,大写字母开头表示导出,可以在其他包使用

  • 尽量包名就是文件夹名

  • user/school.go

package user

import "fmt"

// 函数名小写 不可在包外部被调用和使用
func showInfo() {
	fmt.Println("这所学校的名字是 :>>>>", name, "这所学校的年龄是 :>>>>", age)
}

// 函数名大写,可以导出被其他包使用
func ShowSchool() {
	fmt.Println("这所学校的个人信息是 :>>>> ")
	// 函数名小写 不可在包外部被调用和使用,调用同一个包下的函数
	showInfo()
	fmt.Println("这所学校的名字是 :>>>>", name)
}
  • s1.go
package main

import "Project1/day02/user"

func main() {
	user.ShowSchool()
	// 这所学校的个人信息是 :>>>>
	// 这所学校的名字是 :>>>> DreamCity 这所学校的年龄是 :>>>> 100
	// 这所学校的名字是 :>>>> DreamCity
}

image-20231111112331488

【二】老版本的GOPATH和新的Go Modules的区别

  • 在Go 1.11之前,Go语言的依赖管理主要依赖于GOPATH。
  • 但自从Go 1.11版本引入Go Modules后,推荐使用Go Modules进行依赖管理。

【1】GOPATH模式:

  • 所有项目的代码都必须放在GOPATH路径下的src文件夹下。
  • 第三方包也需要放在GOPATH路径下。
  • 包括项目代码和第三方包都必须在GOPATH路径下,否则会找不到。

【2】Go Modules模式:

  • 代码不再需要放在GOPATH路径下的src文件夹下,可以放在任何路径。
  • 项目路径下必须有一个go.mod文件,通过go mod init自动生成。
  • 通过go mod init 项目名来初始化项目。

【三】将GOPATH修改为Go Modules项目

  • 运行go env -w修改Go的环境变量。
  • 可以移动项目目录,不再受限于GOPATH。
  • 运行go mod init 项目名在项目路径下生成go.mod文件,自动生成内容,不需要手动修改。
    • 例如:
      module 项目名
      go 1.17
      
  • 如果项目中使用了第三方包,可以运行go mod tidy去下载第三方包。

以上是关于Go语言中GOPATH和Go Modules的区别以及将项目从GOPATH修改为Go Modules的步骤。

标签:5.0,GOPATH,之包,package,这所,go,user,Go
From: https://www.cnblogs.com/dream-ze/p/17826365.html

相关文章

  • 【8.0】Go语言基础之可变函数参数、map的使用
    【一】可变长参数【1】任意长度的指定类型的参数packagemainimport"fmt"funcmain(){ //可变长参数 //调用函数 foo(1,2,3,4,5,6) //这是接收到的参数a:>>>>[123456] //这是接收到的参数a的类型:>>>>[]int}//可以接收任意长度的int类......
  • 【7.0】Go语言基础之数组、切片
    【一】数组数组是一种类型,可以连续存储数据,但是数据类型的是一致的。类似于Python中的列表,是一种数据结构【1】数组的定义packagemainimport"fmt"funcmain(){ //定义数组 //定义一个长度为3的数组,里面的数据类型为int类型 //定义好数组以后,大小就固......
  • Golang布隆过滤器升级版
    作用:平常使用的布隆过滤器可以用来过滤Redis空数据,避免缓存穿透。升级点:将原本的bool数组位更改为int数组,实现便于删除操作的场景。代码如下:packagemainimport( "fmt")//BloomFilter布隆过滤器typeBloomFilterstruct{ bitArray[]int//升级版结构哈希所落位置+......
  • 2023-11-11:用go语言,字符串哈希+二分的例题。 给定长为 n 的源串 s,以及长度为 m 的模式
    2023-11-11:用go语言,字符串哈希+二分的例题。给定长为n的源串s,以及长度为m的模式串p,要求查找源串中有多少子串与模式串匹配,s'与s匹配,当且仅当s'与s长度相同,且最多有k个位置字符不同。其中1<=n,m<=10^6,0<=k<=5。来自左程云。答案2023-11-11:go代码用灵捷3.5......
  • 2023-11-11:用go语言,字符串哈希+二分的例题。 给定长为 n 的源串 s,以及长度为 m 的模式
    2023-11-11:用go语言,字符串哈希+二分的例题。给定长为n的源串s,以及长度为m的模式串p,要求查找源串中有多少子串与模式串匹配,s'与s匹配,当且仅当s'与s长度相同,且最多有k个位置字符不同。其中1<=n,m<=10^6,0<=k<=5。来自左程云。答案2023-11-11:go代码用......
  • Go实现Zabbix企业微信应用通知告警
    企业微信https://work.weixin.qq.com/企业微信->应用管理->创建应用个人微信也能接收企业微信信息我的企业->微信插件->扫码关注特殊说明之前企业微信只需要调用接口就能实现微信应用通知,最近改版,变得比较复杂1:需要配置可信IP才能发2:配置可信IP前需要先设置可信域名......
  • Fight Hard for Ecological Protection and Governance of the Yellow River to Addre
    1.Effectivemeasureaimedataddressingthewatercontamination:Wewill fight hard for ecological protection and governance of the Yellow River. We will fully implement the requirements of determining the city, the land, the people,......
  • 想入坑golang web,向大佬们请教些问题?
    当你准备入坑Go语言的Web开发时,以下是一些常见的问题,你可以向大佬们请教:如何设置和启动一个GoWeb服务器?Go语言有哪些常用的Web开发框架?它们之间有什么区别和优劣势?Go语言中的路由是如何实现的?如何处理不同的HTTP请求方法和URL参数?Go语言如何处理请求和响应,以及如何......
  • golang json 序列化、反序列化 字符串反序列化
    golangjson序列化、反序列化字符串反序列化在使用Golang进行开发时,经常会遇到需要将一段JSON字符串进行序列化和反序列化的情况。JSON是一种轻量级数据交换格式,常用于前后端数据传输、存储等场景。Golang提供了内置的encoding/json包来处理JSON的序列化和反序列化。JSON的序列化......
  • 传奇GOM引擎微端连接不上如何解决
    Gom传奇引擎的微端连不上的原因可能有很多,比如网络问题、服务器配置问题、版本兼容性问题等。1.检查网络连接:首先要确保你的网络连接稳定。如果遇到网络问题,比如网络延迟过高,可能会导致你无法连接到服务器。建议使用稳定的网络连接,并尝试重启电脑或路由器。2.检查服务器配置:如果服......