Golang中创建和使用package的实践指南
Golang中创建和使用package的实践指南
type Num struct {
n, d int // 分子,分母
}
func printMyNum(x Num) {
fmt.Println("the fractional number is: %d/%d", x.n, x.d)
}
各位大师好, 可能我在这里发了一些无意义的帖子打扰到大家,但作为初学者,我想知道在Go语言中如何实现以下功能。如果无法实现,请给我建议合适的解决方案:
- 创建一个名为"myNum"的包
- 包含如下数据类型:
- 以及一个打印函数:
- 从"main"中访问和使用该数据类型及函数
我想对于各位大师来说,解决这个问题只是分分钟的事情。所以请帮帮我。 谢谢。
更多关于Golang中创建和使用package的实践指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html
你实际尝试了什么?收到了什么错误信息?
更多关于Golang中创建和使用package的实践指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
非常感谢。这解决了问题。
您好先生, 之前的问题已经解决了。 是的,代码位于 https://github.com/TheScienceUniverse/Library/tree/master/Go/,我正在按照您的建议进行操作。 感谢您,先生。
我假设你的代码库位于 github.com/the01guy/mynum
然后在你想要使用的地方直接使用 import "github.com/the01guy/mynum" 即可。你可能需要根据你在 GitHub 上放置文件的位置来调整路径。
在 myGraph 中(确实不应该在包名中使用任何大小写,保持单个单词且全部小写),你应该使用 include "github.com/TheScienceUniverse/Library/Go/myNum" 而不是相对导入。相对导入不适用于你想要在其他项目中使用的代码,也不允许在后续需要使用依赖项的项目中使用。
func main() {
fmt.Println("hello world")
}
您好,
- 名称中的大小写是为了理解和记忆包名。如果Go语言对此有要求,我会更改它,没问题。
- 我目前正在本地计算机上开发一个项目,但会将其改为通过URL进行相对导入。
我会尽快处理这个问题。
谢谢。

我认为你的方向是正确的。变量名(包括函数声明)必须以大写字母开头,才能从一个包导出到另一个包。你的结构体(Num)会被导出,但你的函数(printMyNum)不会。你需要将其命名为PrintMyNum。
在你的主包中需要导入该包:
import "pathfromsrc/myNum"
使用方式:myNum.Num 和 myNum.PrintMyNum。
这应该是你想要的答案吧。
您好,
我实际尝试的是:
- 创建一个用于处理分数数值的包,但不使用浮点数表示,即在myLib包的结构体(Num)中分别保留分子和分母;
- 使用函数创建基本数学运算(+、-、*、/)并将其保留在同一包中;
- 从主包访问并使用它; 现在它运行良好。
我已将其发布到GitHub仓库,并尝试从那里使用它。如果您知道如何操作,请提供帮助。
谢谢。
在Go语言中创建和使用package是一个基础但重要的实践。下面我将按照你的需求,提供一个完整的示例,展示如何创建名为myNum的包,定义数据类型和函数,并在main包中访问它们。
步骤1: 创建项目结构
首先,确保你的项目有一个标准的Go模块结构。假设项目根目录为myproject,结构如下:
myproject/
├── go.mod
├── main.go
└── myNum/
└── myNum.go
在项目根目录下,初始化Go模块(如果尚未初始化):
go mod init myproject
步骤2: 实现myNum包
在myNum目录下的myNum.go文件中,定义Num类型和PrintMyNum函数。注意,Go包中的标识符(如类型和函数)如果要以大写字母开头,才能从包外部访问。
// myNum/myNum.go
package myNum
import "fmt"
// Num 结构体表示一个分数,包含分子和分母
type Num struct {
N, D int // 使用大写字母开头,以便从包外部访问
}
// PrintMyNum 函数打印Num结构体的内容
func PrintMyNum(x Num) {
fmt.Printf("the fractional number is: %d/%d\n", x.N, x.D)
}
步骤3: 在main包中使用myNum包
在项目根目录下的main.go文件中,导入myNum包,并调用其类型和函数。
// main.go
package main
import (
"myproject/myNum" // 导入myNum包,路径基于go.mod中的模块名
)
func main() {
// 创建一个Num实例
num := myNum.Num{N: 3, D: 4} // 使用myNum.Num类型
// 调用PrintMyNum函数
myNum.PrintMyNum(num) // 输出: the fractional number is: 3/4
}
完整代码说明
- 包定义:在
myNum.go中,使用package myNum声明包名。包名应与目录名一致。 - 导出标识符:在Go中,只有以大写字母开头的标识符(如
Num、N、D、PrintMyNum)才能从包外部访问。这遵循Go的导出规则。 - 导入路径:在
main.go中,导入路径"myproject/myNum"基于go.mod文件中的模块名(这里是myproject)和包目录路径。 - 使用包:通过
myNum.Num和myNum.PrintMyNum访问包中的类型和函数。
运行项目
在项目根目录下,执行以下命令来运行程序:
go run main.go
输出应为:
the fractional number is: 3/4
这个示例展示了如何创建自定义包、定义导出类型和函数,并在主程序中正确使用它们。如果你有更复杂的需求,如添加方法或处理包内部逻辑,可以基于此结构扩展。

