”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在 Go 中创建包

如何在 Go 中创建包

发布于2024-11-08
浏览:833

出于可重用的目的,包是管理 Go 代码的良好开端,因为我们可以将其导入并使用到我们的程序中。

让我们创建一个简单的主文件,以

开始

package main

import "fmt"

func main() {
   fmt.Println("hello world!")
}


这是一个简单的 hello world 程序,当我们运行 go run main.go 时,它会打印出 hello world 字符串。

现在让我们首先创建模块来启动一个包。通常它使用 git 存储库,即使我们没有计划将其推送到任何存储库。在此示例中,我将使用我自己的 Github 存储库并使用 mygopackage 作为包名称。


git mod init github.com/didikz/mygopackage


然后创建一个子目录,例如我使用 models 并在其中创建一个 user.go 。结构应该是这样的

How To Create Package in Go

在 user.go 内部,我将简单地创建一个结构体和一个接收器,稍后可以将其导入到 main.go 中。我还将当前目录名称后面的包名称设置为 models


package models

type User struct {
    Id        int
    FirstName string
    LastName  string
    Address   string
}

func (user *User) GetName() string {
    return user.FirstName   " "   user.LastName
}


回到main.go,现在我们可以尝试导入包并使用定义的结构。使用之前启动的模块名称和包名称。


import "github.com/didikz/mygopackage/models"


现在要使用包中的用户模型,我们可以这样写


var user models.User
user.Id = 1
user.FirstName = "Didik"
user.LastName = "Tri Susanto"
user.Address = "Malang"

// or alternatively
user := models.User{Id: 1, FirstName: "Didik", LastName: "Tri Susanto", Address: "Malang"}

fmt.Println(user.GetName())


一切就绪。接下来,如果我们运行 go run main.go 那么它应该打印出 Didik Tri Susanto

简单吧?

现在最终的 main.go 文件应该是这样的


package main

import (
    "fmt"

    "github.com/didikz/mygopackage/models"
)

func main() {
    user := models.User{Id: 1, FirstName: "Didik", LastName: "Tri Susanto", Address: "Malang"}
    fmt.Println(user.GetName())
}


就是这样,编码愉快!

版本声明 本文转载于:https://dev.to/didikz/how-to-create-package-in-go-3914?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • rnr:适用于每个项目运行脚本的工具
    rnr:适用于每个项目运行脚本的工具
    嘿,JavaScript 和 TypeScript 开发者! ?您是否厌倦了使用不同的命令来启动各种 JS 项目?好吧,我有一些令人兴奋的消息要告诉你!我创建了一个名为 rnr(发音为“runner”)的工具,它使运行任何 JavaScript 或 TypeScript 项目变得超级容易。 ...
    编程 发布于2024-11-08
  • Java 的可选类型如何简化“Get”调用链中空值的处理?
    Java 的可选类型如何简化“Get”调用链中空值的处理?
    使用可选的“Get”调用链安全导航在 Java 编程中,经常会遇到“get”调用链,如下所示:house.getFloor(0).getWall(WEST).getDoor().getDoorknob();为了避免潜在的 NullPointerExceptions,开发人员通常采用详细的 null ...
    编程 发布于2024-11-08
  • 大泥球:理解反模式以及如何避免它
    大泥球:理解反模式以及如何避免它
    前端开发中最臭名昭著的架构反模式可能是大泥球。术语“大泥球”适用于没有明显结构或模块化组织的系统。代码库有机且混乱地增长,成为维护的噩梦。这是许多开发人员发现自己所处的情况,特别是当他们面临着按时完成任务并开发大量功能的压力时。 这就是当前文章的内容:大泥球反模式以及前端开发中的示例,为什么它如此常...
    编程 发布于2024-11-08
  • 如何正确使用带 Map 参数的“reflect.Call”函数?
    如何正确使用带 Map 参数的“reflect.Call”函数?
    解决reflect包中的.Call使用问题在reflect包中使用.Call函数时,遵守所需的参数格式至关重要。本文将指导您完成正确使用 .Call 函数并操作 in 变量以满足目标方法的过程。提供的示例代码中:params := "some map[string][]string&quo...
    编程 发布于2024-11-08
  • 如何使用 HTML 和 CSS 创建翻页卡动画
    如何使用 HTML 和 CSS 创建翻页卡动画
    在这篇文章中,我们将了解如何使用 HTML 和 CSS 以及渐变背景创建时尚的 3D 翻转卡片动画。 访问我的网站 了解结构 我们将使用卡片的两侧(正面和背面)来创建翻转效果。此效果将在悬停时使用 CSS 过渡激活。 <div class="card"> <...
    编程 发布于2024-11-08
  • Python 中的 len() 函数有多高效?
    Python 中的 len() 函数有多高效?
    Python 中 len() 函数的成本影响len() 函数是 Python 内置功能的组成部分,提供有关各种数据结构的长度的信息。具体来说,它通常与列表、元组、字符串和字典一起使用,以确定它们所包含的元素或字符的数量。与直观的感知相反,len() 函数的计算成本保持不变跨越所有上述数据类型。这意味...
    编程 发布于2024-11-08
  • 如何在 Java 中将 Long 值转换为字节数组并返回?
    如何在 Java 中将 Long 值转换为字节数组并返回?
    在 Java 中将 Long 转换为字节数组并返回在 Java 中,将 long 基本数据类型转换为字节数组 (byte[] ),反之亦然是各种操作的常见任务,例如通过 TCP 连接发送数据。下面是实现此转换的全面解决方案:Long 到 Byte Arraypublic byte[] longToB...
    编程 发布于2024-11-08
  • 如何使用 Selenium 在 Google Chrome 中模拟 Microsoft Edge Mobile?
    如何使用 Selenium 在 Google Chrome 中模拟 Microsoft Edge Mobile?
    使用 Selenium 更改 Google Chrome 中的用户代理在 Selenium 自动化脚本中,为浏览器窗口设置特定的用户代理对于模拟设备行为和确保网站渲染至关重要正如预期的那样。在这种情况下,我们的目标是将 Google Chrome 中的用户代理修改为 Microsoft Edge M...
    编程 发布于2024-11-08
  • 哪种 MySQL 获取函数适合您的 PHP 应用程序:`mysql_fetch_array`、`mysql_fetch_assoc` 和 `mysql_fetch_object` 的比较
    哪种 MySQL 获取函数适合您的 PHP 应用程序:`mysql_fetch_array`、`mysql_fetch_assoc` 和 `mysql_fetch_object` 的比较
    比较 mysql_fetch_array、mysql_fetch_assoc 和 mysql_fetch_object:综合分析mysql 函数系列在从 MySQL 查询中检索结果中起着至关重要的作用在 PHP 中。在这些函数中,mysql_fetch_array、mysql_fetch_assoc...
    编程 发布于2024-11-08
  • Lerna – Monorepo 管理的关键
    Lerna – Monorepo 管理的关键
    欢迎回到莫诺雷波城堡! 现在城堡已经建成,每个房间(项目)都已就位。但如果没有正确的管理,事情可能会变得混乱。谁来帮助城堡顺利运转?这时勒纳登场了——一位强大的巫师,拥有神奇的命令,可以让一切保持秩序。 Lerna 是您在 monorepo 土地上的向导,确保所有房间(项目)同步,所有包都链接,并且...
    编程 发布于2024-11-08
  • 如何在 PHP 中循环嵌套数组并显示特定值?
    如何在 PHP 中循环嵌套数组并显示特定值?
    PHP foreach 与嵌套数组:综合指南在 PHP 中,浏览嵌套数组可能是一个常见的挑战。本讨论重点讨论特定场景,您的目标是显示嵌套数组的子集,特别是第二个嵌套数组中的值。将 foreach 与嵌套数组结合使用要使用 foreach 处理嵌套数组,可以采用以下方法:示例:$tmpArray = ...
    编程 发布于2024-11-08
  • 提升 Web 性能:前端开发人员指南
    提升 Web 性能:前端开发人员指南
    大家好!自从我上次写博客以来已经有一段时间了,我承认,这让我有点难过。现实是,有太多东西需要学习,有时感觉永远没有足够的时间来深入了解所有内容。我在跟谁开玩笑呢?事实是,我最近拖延得很厉害。 但最近,我一直在探索网络性能——这对于任何前端开发人员来说都是一个至关重要的话题——我很高兴分享我所学到的东...
    编程 发布于2024-11-08
  • 如何利用先进的加密技术增强数据保护?
    如何利用先进的加密技术增强数据保护?
    对称密钥加密:FernetPython 拥有强大的加密库,提供 Fernet,这是一种安全、最佳实践的加密方案。 Fernet 采用 AES CBC 加密、HMAC 签名以及版本和时间戳信息来保护数据。建议使用 Fernet.generate_key() 生成密钥。from cryptography...
    编程 发布于2024-11-08
  • 什么是本地主机?本地主机作为开发人员的用途
    什么是本地主机?本地主机作为开发人员的用途
    您有没有想过当开发人员在将网站上线之前测试网站时会发生什么?或者网络管理员如何检查他们的系统是否正常工作?答案在于一个强大但经常被误解的概念,称为 localhost。让我们深入了解 localhost 是什么、它为何重要以及它如何变得非常有用。 什么是本地主机? 用最简单的术语来说...
    编程 发布于2024-11-08
  • 为什么 Debian 和 Ubuntu Docker 容器之间的标准输出缓冲不同?
    为什么 Debian 和 Ubuntu Docker 容器之间的标准输出缓冲不同?
    Docker 容器中的标准输出缓冲:Debian 与 Ubuntu 的案例在 Docker 容器中执行代码时,标准输出缓冲可能会发生在在某些情况下,但在其他情况下则不然。在使用 io.MultiWriter 将 stdout 定向到控制台和日志文件的情况下会出现此问题。根本原因:平台差异根本原因造成...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3