GO语言入门:创建一个GO模块

这篇教程介绍了如何在GO语言中创建一个模块,包括模块的用途、准备工作以及开始创建一个可被他人使用的模块。内容涵盖从创建模块、编写包含函数的代码,到设置模块路径、版本管理和导出函数等基础知识。

创建一个GO模块

一、说明

这是介绍一些GO语言基本特性教程的第一部分。如果你是第一次使用Go,确保看一眼Go简单入门指导,这篇文章介绍了go命令,go模块,和一个简单的go代码。

在这篇知道中,你讲创建两个模块。第一个是一个库,为了能让其它的库和应用导入。第二个是一个调用者应用,它将使用第一个模块。

本教程的序列包含了七个简单的主题,每一个都阐明了一个语言的不同部分。

  1. 创建一个模块。写一个带有函数的模块,你能在其它的模块调用;
  2. 从另一个模块调用你的代码。带入并使用你的新模块;
  3. 返回和处理一个错误。添加简单的错误处理;
  4. 返回一个随机的问候。用切片处理数据(Go的动态大小数据);
  5. 为多个人返回问候语。存储key-valur对到map中;
  6. 添加一个测试。使用Go内置的单元测试机制来测试你的代码;
  7. 编译和安装应用。编译并安装你的代码到本地。

二、准备

  • 有一些编程经历;
  • 一个编写代码到工具;
  • 一个命令终端;

三、开始一个别人能使用的模块

从创建一个Go模块开始。在一个模块中,你为一个离散的和有用的函数集收集一个或多个有关的包。例如,你能使用带有做金融分析函数的包创建一个模块,以便于别人在写金融应用的时候能够使用你的工作。

Go代码是被分组成包,并且包是被分组成模块。你的模块指定了运行你代码需要的依赖,包括Go的版本,和其它需要的模块集。

当你在模块中添加或优化功能,你发布模块的新版本。开发者写调用你模块函数的代码,能够导入已经更新的模块,在发布到生产去使用之前进行测试。

  1. 打开一个命令提示符,进入到你的主目录;

    $ cd
    $
    
  2. 为你的Go模块源代码创建一个"greetings"文件夹;

    $ mkdir greetings
    $ cd greetings/
    $
    
  3. 使用go mod init命令开始你的模块

    运行go mod init命令,给它一个模块路径,例如example.com/greetings。如果你发布一个模块,这必须是一个能被Go工具下载的路径,这将是你的代码仓库。

    $ go mod init example.com/greetings
    go: creating new go.mod: module example.com/greetings
    $
    

    这个go mod init命令创建了一个go.mod文件,能够跟踪你的代码依赖。目前,这个文件仅仅包含了模块命令和你代码支持的Go的版本。但是只要你添加依赖,go.mod文件将列出你代码依赖的版本。这保持了构建的可重现,并且能够直接控制模块版本的使用。

    $ ll
    total 8
    drwxr-xr-x  3 lifei  staff   96  8 17 00:07 ./
    drwxr-xr-x  4 lifei  staff  128  8 17 00:03 ../
    -rw-r--r--  1 lifei  staff   38  8 17 00:07 go.mod
    $ cat go.mod
    module example.com/greetings
    
    go 1.18
    $
    
  4. 在你的文本编辑器上,创建一个文件,在上面写你的代码,把它叫做"greetings.go";

  5. 复制下面的代码到greetings.go文件中,并保存文件;

    package greetings
    
    import "fmt"
    
    // Hello 为一个命名的人返回一个问候
    func Hello(name string) string {
      // 返回一个问候,嵌套名字在消息中
      message := fmt.Sprintf("Hi, %v. Welcome!", name)
      return message
    }
    

    这是你的模块的第一段代码。它给任何调用者返回一个问候。你将在下一部分写代码调用这个函数。

在这个代码中:

  • 声明了一个“greeting”包,用于收集相关函数;

  • 实现了“Hello”函数,返回一个问候;

  • 这个函数需要一个string类型的name参数,这个函数也返回一个string。在Go中,一个函数它的名字使用一个大写字母开始,它能够被不在相同包的函数调用。这个Go中被称为导出名称。
    在这里插入图片描述

  • 声明一个message变量持有你的问候;

    在Go中,:=操作符是一个快捷方式,用于在一行中声明和初始化一个变量(Go使用右边的值来确定变量的类型)。

    多走一步,你也能这样写:

    var message string
    message = fmt.Sprintf("Hi, %v. Welcome!", name)
    
  • 使用fmt 包的Sprintf函数去创建一个问候语。第一个参数是格式化的字符串,并且Sprintf用name参数的值替换%v格式动词。插入name的值,完成问候语。

  • 将已经格式化后的问候语返回给调用者;

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值