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

如何在 Go 中创建包

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

出于可重用的目的,包是管理 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]删除
最新教程 更多>
  • 如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    如何使用Java.net.urlConnection和Multipart/form-data编码使用其他参数上传文件?
    使用http request 上传文件上传到http server,同时也提交其他参数,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    编程 发布于2025-04-16
  • Python高效去除文本中HTML标签方法
    Python高效去除文本中HTML标签方法
    在Python中剥离HTML标签,以获取原始的文本表示 仅通过Python的MlStripper 来简化剥离过程,Python Standard库提供了一个专门的功能,MLSTREPERE,MLSTREPERIPLE,MLSTREPERE,MLSTREPERIPE,MLSTREPERCE,MLST...
    编程 发布于2025-04-16
  • 如何在php中使用卷发发送原始帖子请求?
    如何在php中使用卷发发送原始帖子请求?
    如何使用php 创建请求来发送原始帖子请求,开始使用curl_init()开始初始化curl session。然后,配置以下选项: curlopt_url:请求 [要发送的原始数据指定内容类型,为原始的帖子请求指定身体的内容类型很重要。在这种情况下,它是文本/平原。要执行此操作,请使用包含以下标头...
    编程 发布于2025-04-16
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-04-16
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-04-16
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, AttributeError: SomeClass...
    编程 发布于2025-04-16
  • 点击显示图片的技巧及方法
    点击显示图片的技巧及方法
    网络上的大多数图像都是多余的。如果我可能有点混蛋,那么其中99%的人甚至根本没有帮助(尽管有极少数例外)。那是因为图像通常不补充他们应该支持的文本,而是用户,将永远加载和炸毁像某种绩效税之类的数据上限。 值得庆幸的是,这主要是一个设计问题,因为使图像表现效果和更易于用户友好比以前要容易得多。我们具有...
    编程 发布于2025-04-16
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-04-16
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-04-16
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-04-16
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-04-16
  • CSS强类型语言解析
    CSS强类型语言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    编程 发布于2025-04-16
  • 如何使用PHP从XML文件中有效地检索属性值?
    如何使用PHP从XML文件中有效地检索属性值?
    从php PHP陷入困境。使用simplexmlelement :: attributes()函数提供了简单的解决方案。此函数可访问对XML元素作为关联数组的属性: - > attributes()为$ attributeName => $ attributeValue){ echo ...
    编程 发布于2025-04-16
  • 使用Lambda表达式与PyQt槽函数为何导致意外行为?
    使用Lambda表达式与PyQt槽函数为何导致意外行为?
    使用lambda表达式连接pyqt 中的插槽,可以使用lambda表达式将信号连接到插槽。但是,在某些方案中使用lambda表达式可能会导致意外行为。考虑以下代码:类mainwindow(qtgui.qwidget): def __init __(自我): ... ...
    编程 发布于2025-04-16
  • 包在构建时找不到原因及解决方法
    包在构建时找不到原因及解决方法
    fixing fixing“无法在go build Understanding the Package Directory StructureGo expects packages to reside in directories with the same name as their pack...
    编程 发布于2025-04-16

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

Copyright© 2022 湘ICP备2022001581号-3