Go语言学习-创建Go模块(1)

news2024/11/26 8:57:10

这是介绍Go语言基础特性的第一部分教程。如果你是开开开始学习Go,请确保你看了关于介绍Go语言语法,Go模块的简洁代码文章:启动Go
在本教程中,你将会创建两个模块。第一个模块是个库来被用作其他库或者应用程序来引用。第二个模块是一个调用者应用程序,它将调用第一个模块。
本教程将会以一下7步来分别说明Go语言的不同部分。

要求

  • 一些编程经验。这里的代码非常简洁,但是能够帮助你了解到一些函数、循环和数组。
  • 一个编写代码的工具。任意一个文本编辑器都可以。大多数编辑器都能够很好的支持GO语言开发。如最受欢迎的VSCode(免费),GoLand(付费)和Vim(免费)。
  • 一个命令行终端。Go能够非常好的在Linux、Mac的命令行,Windows的PowerShell、cmd终端上运行。

开始创建一个其他人能够使用的Go模块

我们通过创建Go模块开始。在这个模块中,你需要为一套离散且有用的函数整合一个或者多个依赖包。例如,你可能需要通过一个拥有能够做金融分析函数的包来创建一个模块,让这个模块能够被其他需要写金融应用的使用。如果你想了解更多关于发布模块的内容,可以查看开发和发布模块
Go的代码被包含在包中,同时由包被包含在模块中。你的模块需要指定Go版本和其他你模块所要求的依赖才能运行你的代码。
当你在你的模块中添加或者提升功能时,你将发布新版本的模块。在投入生产环境之前,开发者可以通过调用你最新的模块来编写代码测试新的版本。
1、打开命令终端并且转到你的主目录

cd xxxx

2、创建一个greetings目录作为你的Go模块根目录

mkdir greetings
cd greetings

3、使用 go mod init 命令来初始化项目
运行go mod init 命令并且给出你的模块路径–这里使用example.com/greetings。如果你发布模块,这个路径必须是你的模块能被GoTool下载的路径。这里将会是你代码的存储库。
如果你想了解更多通过模块路径命名模块方面的东西,请查看管理模块

go mod init example.com/greetings

go mod init命令用于创建一个go.mod文件来追溯你的代码依赖。目前为止,这个文件中有你模块的唯一命名和你代码所支持的Go的版本。但是作为你添加的依赖,go.mod文件将会列出你代码所依赖的版本。这保证了编译的可重复性,同时可以让你直接控制使用哪个版本的模块。
4、在你的文本编辑器中,创建并且命名为 greetings.go.文件,之后编写代码
5、粘贴以下代码到 greetings.go文件中并且保存

package greetings

import "fmt"

// Hello returns a greeting for the named person.
func Hello(name string) string {
    // Return a greeting that embeds the name in a message.
    message := fmt.Sprintf("Hi, %v. Welcome!", name)
    return message
}

这就是你创建的第一个模块。他会给调用者返回一个问候。你将会在接下来的步骤中编写代码调用它。
在这个代码中,你:
声明了一个greetings 包来整合相关函数。
实现了一个Hello函数来作为greeting的返回。
这个函数的的参数name是一个string类型。同时函数的返回参数类型也是string类型。在Go中,开头大写命名的函数能够在其他包中的函数调用。这在Go中被称为导出名称(exported name)。想要了解更多关于导出名称(exported name)的知识,可以查看export name

在这里插入图片描述
声明了一个变量来接收你的问候(greeting)。
在Go中,:=是一个一行代码快速创建和声明变量的方式(Go使用右边的值来确定变量的类型)。如果不用这种方式,你可以这样写:

var message string
message = fmt.Sprintf("Hi, %v. Welcome!", name)

使用了fmt包的Sprintf函数来创建问候消息。第一个参数是字符串格式,同时Sprintf把%v替换为name参数的值。插入name参数的值来组成问候语。
给调用者返回格式化的问候语。

下一篇文章中,你将会在另一个模块中调用这个函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/616103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

msvcp140.dll重新安装的三个解决方法,解决找不到msvcp140.dll问题

msvcp140.dll是Microsoft Visual C Redistributable for Visual Studio 2015的一个重要组件,它是一个动态链接库文件(DLL),包含许多用于开发和执行C程序的函数。如果它不在您的计算机上或不正确,您将收到一个错误消息&…

linux 部署mysql

本文介绍下Centos7中mysql的安装(Centos7以下版本中有些命令和centos7中有些不同,安时需注意下自己的linux版本) 事先准备 1、查看系统中是否自带安装mysql yum list installed | grep mysql ![在这里插入图片描述](https://img-blog.csdnimg.cn/e322b2f4036c4d9…

不愧是华为出来的,太强了。。。

前言 实习去了博彦科技(外包),做的就是螺丝钉的活,后面还因为人效不佳,被开了。 正式毕业后去了另外一个做电子发票的公司,但是都是功能测试和一点点APP测试,然后经常被开发怼,测试…

【Linux】13. 文件操作

1. 重新认识文件 经过之前的linux命令操作、进程相关概念的学习,我们对于文件也并不陌生 首先需要明确以下概念: 即使是空文件,也要在磁盘当中占据空间文件 文件内容 文件属性文件操作 对文件内容的操作 或者 对文件属性的操作 或者 二者…

软件测试人到30岁+,还有出路吗???

最近一个学生也可以说是朋友,他遇到了一个让他困扰的职场难题,背景如下: 1)他们公司准备搞安全测试了,现在有人员培训的计划,所以全组有学习安全测试课程的安排。 2)他自己目前专职性能测试1年了…

基于SSM的物流仓库管理系统

摘 要 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

“专精特新”发展概况

专精特新概念自2011年开始萌芽,2021年上升为国家战略,2022年写进二十大报告,顶层设计持续推进,旨在聚焦产业链关键环节,加强技术创新,破解核心技术“卡脖子”问题。全国各地政府从企业调研、整体设计、培育…

AI崛起:哪些职位将首当其冲?

随着人工智能的迅猛发展,人们普遍担心自己的工作是否会被AI取代。虽然是否能毁灭人类尚难以确定,但可以肯定的是,AI绝对会抢走某些职位。以下是十个职业,它们很可能是被AI取代的首批。 制造业:随着自动化机器人的进步…

docker-compose 搭建 zipkin 服务端

目录 基于docker-compose搭建服务端 数据库 服务器 docker-compose.yaml 问题 测试 基于docker-compose搭建服务端 数据库 我这边存储选择了Mysql存储,新建了 zipkin库,数据库脚本如下 -- -- Copyright 2015-2019 The OpenZipkin Authors -- -- Li…

Java单元测试学习(二)

Java单元测试学习&#xff08;二&#xff09; 使用测试框架JUnitMockito和单元测试覆盖率框架JaCoCo 目录结构 依赖—很好&#xff0c;这里又有个小插曲 打开页面查看覆盖率时一直显示0/0---->最后的解决方式是①添加了maven-surefire-plugin插件 <?xml version&quo…

C++中流的分类

前言 关于流本质的问题&#xff0c;其实从我刚开始学习C的时候&#xff0c;就已经存在了。当时找了不少的资料&#xff0c;不过一直处于那种知其然而不知其所以然的状态&#xff0c;关于流的本质问题我还是一直没有搞通&#xff0c;始终就是懵懵懂懂的。 不过在今天&#xff0…

智能电能表采集失败的原因和解决方法

智能电能表采集失败的原因和解决方法 智能电能表作为现代电力系统中的重要组成部分&#xff0c;在电能计量、电费结算等方面发挥着关键作用。然而&#xff0c;在实际应用过程中&#xff0c;有时会出现电能表采集失败的情况&#xff0c;这可能源于网络连接故障、数据传输错误等…

数据结构基础-堆

堆实现 计算机科学中&#xff0c;堆是一种基于树的数据结构&#xff0c;通常用完全二叉树实现。堆的特性如下 在大顶堆中&#xff0c;任意节点 C 与它的父节点 P 符合 P.value \geq C.value而小顶堆中&#xff0c;任意节点 C 与它的父节点 P 符合 P.value \leq C.value最顶层…

维护嵌入式 Linux 内核——So Easy

导读Pengutronix 内核黑客 Jan Lbbe 总结了嵌入式 Linux 中正在不断增长的安全威胁&#xff0c;并在这次欧洲嵌入式 Linux 会议上概述了一个计划&#xff0c;以保持长期设备的安全和功能完整。 安全漏洞只发生在 Windows 上的好日子正在快速过去。恶意软件黑客和拒绝服务老手们…

【InsCode AI 创作助手】关于编程人员的未来发展趋势,看看AI们怎么说

一、你平时会使用这类AI工具吗&#xff1f;你对这类型的工具有什么看法&#xff1f; 1&#xff09;会经常使用AI工具吗&#xff1f; 是的&#xff0c;我在生活和工作中经常会使用AI工具&#xff0c;尤其是chatGPT&#xff08;3.5&#xff09;和文心一言&#xff0c;关于midjour…

【微信小程序开发】第 5 节 - 小程序代码的构成

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、了解项目的基本组成结构 3、小程序页面的组成部分 4、JSON 配置文件 4.1、json 配置文件的作用 4.2、app.json 文…

http首部(下)

开始头大&#xff0c;哈哈&#xff0c;这个东西真的很无聊且枯燥&#xff0c;奈何最近的学习中经常用到这些知识&#xff0c;还是过一遍比较放心。上一篇博客中我们讨论了http报文首部&#xff0c;其划分为请求头和响应头。请求头主要由请求行、请求字段、通用字段、实体字段组…

ChatGPT请不要和打工人争辩今天星期几

目录 1 今天星期几2 聊聊ChatGPT与工具的结合 1 今天星期几 周五了&#xff0c;一个星期快结束了&#xff0c;闲来问问chatgpt (gpt-3.5) 今天 ( 2023.06.03星期五&#xff09;星期几&#x1f601;&#xff0c;chatgpt给出的回答如下&#xff1a; 今天是2023年6月2号没错&…

Linux系统下安装配置 Nginx 详细教程介绍

Linux系统下安装配置 Nginx 详细教程介绍 一、下载 Nginx 安装包 打开Nginx官网 &#xff1a;nginx: download 然后我们找到一个版本&#xff0c;把鼠标移动到上面&#xff0c;右键 - 复制链接地址 我们使用 wget 命令把Nginx安装包下载到/usr/local/目录中 安装wget yum…

基于html+css的图展示110

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…