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语言中如何实现以下功能。如果无法实现,请给我建议合适的解决方案:

  1. 创建一个名为"myNum"的包
  2. 包含如下数据类型:
  3. 以及一个打印函数:
  4. 从"main"中访问和使用该数据类型及函数

我想对于各位大师来说,解决这个问题只是分分钟的事情。所以请帮帮我。 谢谢。


更多关于Golang中创建和使用package的实践指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html

9 回复

你实际尝试了什么?收到了什么错误信息?

更多关于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")
}

您好,

  1. 名称中的大小写是为了理解和记忆包名。如果Go语言对此有要求,我会更改它,没问题。
  2. 我目前正在本地计算机上开发一个项目,但会将其改为通过URL进行相对导入。 我会尽快处理这个问题。 谢谢。表情

我认为你的方向是正确的。变量名(包括函数声明)必须以大写字母开头,才能从一个包导出到另一个包。你的结构体(Num)会被导出,但你的函数(printMyNum)不会。你需要将其命名为PrintMyNum。

在你的主包中需要导入该包:

import "pathfromsrc/myNum"

使用方式:myNum.Num 和 myNum.PrintMyNum。

这应该是你想要的答案吧。

您好,

我实际尝试的是:

  1. 创建一个用于处理分数数值的包,但不使用浮点数表示,即在myLib包的结构体(Num)中分别保留分子和分母;
  2. 使用函数创建基本数学运算(+、-、*、/)并将其保留在同一包中;
  3. 从主包访问并使用它; 现在它运行良好。

我已将其发布到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中,只有以大写字母开头的标识符(如NumNDPrintMyNum)才能从包外部访问。这遵循Go的导出规则。
  • 导入路径:在main.go中,导入路径"myproject/myNum"基于go.mod文件中的模块名(这里是myproject)和包目录路径。
  • 使用包:通过myNum.NummyNum.PrintMyNum访问包中的类型和函数。

运行项目

在项目根目录下,执行以下命令来运行程序:

go run main.go

输出应为:

the fractional number is: 3/4

这个示例展示了如何创建自定义包、定义导出类型和函数,并在主程序中正确使用它们。如果你有更复杂的需求,如添加方法或处理包内部逻辑,可以基于此结构扩展。

回到顶部