GO语言导入自己写的包(同级目录和不同目录)

 更新时间:2024年09月26日 10:31:29   作者:素质白嫖怪  
本文介绍了如何在Go语言项目中导入同级目录和不同目录的包,详细解释了创建文件结构、编写主函数、同级目录和不同目录方法的调用,适合初学者参考,帮助理解Go项目的基本构建和包管理

作为自学小白,困扰了我好久的问题,解决这个问题后,记录该文章 用以帮助后续刚入门的朋友

一、在GOPATH环境变量里的src文件下创建一个练习文件test2(不能含有下划线)

二、创建一个主函数main.go(每一个项目中都必须有一个main包),say.go(用于展示同级目录),calc文件夹,且calc文件夹内创建一个calc.go(用于展示不同级目录)

1、调用同级目录的方法

项目结构如下图

在main.go中代码如下

package main //每个程序必须要有的一个包 main

import "fmt"

func main() {
	fmt.Println("我是main.go里面的main函数")
}

在say.go中的代码如下

package main  //因为和main.go函数是同级,所以只能使用和main.go一样的包名 : main  不然会找不到

import "fmt"

func sayHello() {		
	fmt.Println("我是say.go里面的sayHello函数")
}

这个时候 在main.go中的main函数可以直接调用同级目录say.go中的sayHello函数。输入同级代码时会出现提示

在main函数中直接使用即可  sayHello(),结果如下

2、调用不同目录的包

首先在当前的目录中初始化(该演示项目为test2,在终端中 输入go mod init '当前的项目名'),初始化结束后,会发现在项目中多了一个go.mod文件

go mod init test2

打开go.mod文件

module test2

go 1.22.4

在calc文件夹中的calc.go中填写以下代码 (注意 共有 和 私有  方法)

package calc  //包名最好和文件夹名一致

//方法名的首字母为大写,意味着可以让其他目录调用(共有)
func Add(a, b int) int {
	return a + b
}
//方法名的首字母为小写,意味着只能让同一个包名的使用(私有)
func minus(a,b int) int  {
	return a - b
}

 在main.go中引入calc文件夹里的包

package main //每个程序必须要有的一个包 main

import "fmt"
import "test2/calc" //test2 是go.mod中module后面的值, /  后面接你要导入的文件夹

//也可以使用 improt ("fmt" "test2/calc")

func main() {
	fmt.Println("我是main.go里面的main函数")
	sayHello()

	result := calc.Add(1, 2)  //能够使用calc包里面的共有函数Add;如果使用私有函数就会报错
	fmt.Printf("result:%d", result)
}

至此 调用同级目录和不同级目录的包 就成功实现了 

到此这篇关于GO语言导入自己写的包(同级目录和不同目录)的文章就介绍到这了,更多相关GO语言导入自己写的包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go单元测试利器testify使用示例详解

    Go单元测试利器testify使用示例详解

    这篇文章主要为大家介绍了Go单元测试利器testify使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • golang使用mapstructure解析json

    golang使用mapstructure解析json

    mapstructure 是一个 Go 库,用于将通用映射值解码为结构,这篇文章主要来和大家介绍一下golang如何使用mapstructure解析json,需要的可以参考下
    2023-12-12
  • Golang time包中的函数用法详解

    Golang time包中的函数用法详解

    在日常开发过程中,会频繁遇到对时间进行操作的场景,使用 Golang 中的 time 包可以很方便地实现对时间的相关操作,接下来的几篇文章会详细讲解 time 包,本文讲解一下 time 包中的函数,需要的朋友可以参考下
    2023-08-08
  • Golang实现短网址/短链服务的开发笔记分享

    Golang实现短网址/短链服务的开发笔记分享

    这篇文章主要为大家详细介绍了如何使用Golang实现短网址/短链服务,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-05-05
  • 初识Golang Mutex互斥锁的使用

    初识Golang Mutex互斥锁的使用

    在学习操作系统的时候,我们应该都学习过临界区、互斥锁这些概念,用于在并发环境下保证状态的正确性。在 Go语言 里面互斥锁是 sync.Mutex ,我们本篇文章就来学习下为什么要使用互斥锁、如何使用互斥锁,以及使用时的常见问题
    2022-10-10
  • 从基础到高级详解Go语言中错误处理的实践指南

    从基础到高级详解Go语言中错误处理的实践指南

    Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助
    2025-09-09
  • Go语言面向对象特性(封装、组合、多态)超详细讲解

    Go语言面向对象特性(封装、组合、多态)超详细讲解

    面向对象编程具有高内聚低耦合,易维护、易扩展、易复用的优点,而Go语言中也是可以进行面向对象编程的,这篇文章主要介绍了Go语言面向对象特性(封装、组合、多态)的相关资料,需要的朋友可以参考下
    2026-03-03
  • 浅析GO语言的垃圾回收机制

    浅析GO语言的垃圾回收机制

    今天我们来聊聊golang是如何进行垃圾回收的,我们知道,目前各语言进行垃圾回收的方法有很多,如引用计数、标记清除、分代回收、三色标记等,各种方式都有其特点,文中介绍的非常详细,感兴趣的小伙伴跟着小编一起学习吧
    2023-07-07
  • Go语言Time包的具体使用

    Go语言Time包的具体使用

    Go语言中有关于时间和日期的方法都在time包里面,本文主要介绍了Go语言Time包,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • golang编程入门之http请求天气实例

    golang编程入门之http请求天气实例

    这篇文章主要介绍了golang编程入门之http请求天气实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论