如何在Go中编写包

包由位于同一目录中的Go文件组成,这些文件在开头具有相同的package语句。你可以从包中包含额外的功能,使程序更复杂。有些包可以通过Go标准库获得,因此与Go安装一起安装。其他可以使用Go的go get命令安装。您还可以通过使用必要的package语句在要共享代码的相同目录中创建Go文件来构建自己的Go包。

本教程将指导您编写用于其他编程文件中的Go包。

前期准备

  • 按照[如何安装和设置Go本地编程环境]系列中的教程之一设置Go编程环境。在本地编程环境教程中按照步骤5创建您的Go工作空间。要遵循本文中的示例和命名约定,请阅读第一部分“编写和导入包”。
  • 要加深您对GOPATH的了解,请阅读我们的文章Understanding the GOPATH

编写和导入包

编写包就像编写任何其他Go文件一样。包可以包含函数、[类型]和[变量]的定义,然后可以在其他Go程序中使用它们。

在我们创建新包之前,我们需要在Go工作区中。这通常在我们的gopath下。例如,在本教程中,我们将包命名为greet。为此,我们在项目空间的gopath中创建了一个名为greet的目录。如果我们的组织是gopherguides,并且我们想在组织下创建greet包,同时使用Github作为我们的代码仓库,那么我们的目录将如下所示:

└── $GOPATH
    └── src
        └── github.com
            └── gopherguides

greet目录在gopherguides目录中:

└── $GOPATH
    └── src
        └── github.com
            └── gopherguides
                └── greet

最后,我们可以添加目录中的第一个文件。通常的做法是包中的primaryentry point文件以目录的名称命名。在这种情况下,我们将在greet目录中创建一个名为greet.go的文件:

└── $GOPATH
    └── src
        └── github.com
            └── gopherguides
                └── greet
                    └── greet.go

创建文件后,我们就可以开始编写希望在项目之间重用或共享的代码了。在本例中,我们将创建一个名为Hello的函数,打印出Hello World

在文本编辑器中打开greet.go文件并添加以下代码:

greet.go

package greet

import "fmt"

func Hello() {
   
   
	fmt.Println("Hello, World!")
}

让我们分解第一个文件。每个文件的第一行都需要你所在的package的名称。因为你在greet包中,所以要在package关键字后面加上包的名称:

package greet

这将告诉编译器将文件中的所有内容都视为greet包的一部分。

接下来,你需要在import语句中声明任何其他需要使用的包。在这个文件中,你只需要使用fmt包:

import "fmt"

最后,创建函数Hello。它将使用fmt包打印Hello, World!:

func Hello() {
   
   
	fmt.Println("Hello, World!")
}

现在你已经编写了greet包,你可以在创建的任何其他包中使用它。让我们创建一个新包,在其中使用greet包。

你将创建一个名为example的包,这意味着你需要一个名为example的目录。在你的gopherguides组织中创建此包,目录结构如下所示:

└── $GOPATH
    └── src
        └── github.com
            └── gopherguides
                    └── example

现在您有了新包的目录,可以创建入口点文件。因为这将是一个可执行程序,所以将入口文件命名为main.go被认为是最佳实践:

└── $GOPATH
    └── src
        └── github.com
            └── gopherguides
                └── example
                    └── main.go

在你的文本编辑器中,打开main.go并添加以下代码来调用greet包:

main.go

package main

import "github.com/gopherguides/greet"

func main(

相关推荐

  1. 如何Go编写

    2023-12-10 09:52:03       46 阅读
  2. 如何Go编写Switch语句

    2023-12-10 09:52:03       36 阅读
  3. 如何解决Go循环依赖】

    2023-12-10 09:52:03       17 阅读
  4. 如何Go构建For循环

    2023-12-10 09:52:03       38 阅读
  5. 如何Go制作HTTP服务器

    2023-12-10 09:52:03       47 阅读
  6. 如何Go发起HTTP请求

    2023-12-10 09:52:03       52 阅读
  7. 如何Go使用泛型

    2023-12-10 09:52:03       39 阅读
  8. 如何Go使用模板

    2023-12-10 09:52:03       32 阅读
  9. Go语言如何调试

    2023-12-10 09:52:03       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 09:52:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 09:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 09:52:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 09:52:03       20 阅读

热门阅读

  1. go与ioc

    2023-12-10 09:52:03       33 阅读
  2. 深入学习之anaconda、pytorch、cuda安装

    2023-12-10 09:52:03       39 阅读
  3. 开启 winrm 功能

    2023-12-10 09:52:03       35 阅读
  4. VSCode 创建工作区,多文件夹终端切换

    2023-12-10 09:52:03       35 阅读
  5. Python排序指南

    2023-12-10 09:52:03       35 阅读
  6. Vue笔记(五)路由进阶

    2023-12-10 09:52:03       38 阅读
  7. python制作贪吃蛇游戏

    2023-12-10 09:52:03       37 阅读
  8. TimescaleDB-1 安装

    2023-12-10 09:52:03       52 阅读
  9. 力扣1004题 最大连续1的个数 III 滑动窗口

    2023-12-10 09:52:03       33 阅读
  10. Doris Hive外表

    2023-12-10 09:52:03       37 阅读