Golang多模块开发的详细过程

目录
  • Golang 多模块开发
  • 前提条件
    • 基本要求
    • 本地环境
  • 代码开发
    • 创建模块
    • 创建工作空间
    • 修改源码
  • 总结

Golang 多模块开发

今天学习下Golang中多模块的基础知识,学习多模块的运行原理,使用多模块的方式,可以让开发者的代码在其他多个模块中构建、运行。提高代码的复用,从而提高开发效率。

在今天的学习中,将在工作工作空间中创建两个模块,然后进行模块之间的引用,并运行程序结果。

前提条件

基本要求

  • Go 1.18 及更高版本
  • 合适的编译工具 - text编辑器也满足要求
  • 命令终端 - Linux、Mac系统shell, Windows系统的Cmd、PowerShell

本地环境

  • Go 版本信息

  • 系统信息 - MacOS
  • 编辑工具 - Sublime Text

代码开发

创建模块

1.打开shell终端,进入代码目录

2.创建工作空间,并进入

$ mkdir workspace
$ cd workspace

3.初始化模块 - 新创建一个hello模块,依赖golang.org/x/example模块

创建hello模块

$ mkdir hello
$ cd hello
$ go mod init example.com/hello
go: creating new go.mod: module example.com/hello

添加依赖

$ go get golang.org/x/example

4.在hello目录下,创建hello.go源文件,内容如下

package main
import (
    "fmt"

    "golang.org/x/example/stringutil"
)
func main() {
    fmt.Println(stringutil.Reverse("Hello"))
}

5.运行程序

$ go run example.com/hello

创建工作空间

在这一步中,创建go.workwe

初始化工作空间 - 在workspace目录下 执行以下命令,该命令会自动生成一个go.work 文件

$ go work init ./hello

go.work 文件的内容如下

go.work文件内容的语法跟 go.mod 类似。第一行告诉Go编译器 使用哪个版本来解释文件;第二行告诉Go, 编译时的主模块;

运行程序 - 在workspace目录执行命令(区别之前在hello目录下执行)

$ go run example.com/hello

Go命令将工作空间中的所有模块作为主模块。这允许我们引用模块内的包,甚至模块外的包。在模块或工作区外运行go run命令将导致错误,因为go命令不知道要使用哪些模块。

接下来,我们将向工作区添加golang.org/x/example模块的本地副本。然后,我们将向stringtil包添加一个新函数,我们可以使用它来代替Reverse。

修改源码

在这一步中,我们将下载包含golang.org/x/example模块的Git repo副本,将其添加到工作区,然其中添加一个新函数,然后将从hello程序中使用该函数。

1.克隆代码 - 在workspace目录 执行以以下命令复制git代码

$ git clone https://go.googlesource.com/example
Cloning into 'example'...
remote: Total 165 (delta 27), reused 165 (delta 27)
Receiving objects: 100% (165/165), 434.18 KiB | 1022.00 KiB/s, done.
Resolving deltas: 100% (27/27), done.

遗憾的是,国内的环境并不一定能够通过git clone的命令复制代码,会出现以下错误

可以点击此连接 官网 下载代码压缩包

下载完毕后,将压缩包进行解压 并重新命名会example,workspace的代码结构如下

2.增加模块 - 使用命令新增模块

go work use ./example

至此,go.work文件中依赖了两个模块

3.新增函数 - 在workspace/example/stringutil目录下新增 toupper.go文件,文件内容如下

package stringutil

import "unicode"

// ToUpper uppercases all the runes in its argument string.
func ToUpper(s string) string {
    r := []rune(s)
    for i := range r {
        r[i] = unicode.ToUpper(r[i])
    }
    return string(r)
}

4.调用新增函数 - 修改workspace/hello/hello.go代码文件

func main() {
    fmt.Println(stringutil.ToUpper("Hello"))
    fmt.Println(stringutil.Reverse("Hello"))
}

5.执行代码 - 在workspace目录下执行

go run example.com/hello

至此,我们学会了拉取github上的原代码,并学会了如何新增函数,如何调用。

总结

到此这篇关于Golang多模块开发的文章就介绍到这了,更多相关Golang多模块开发内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Golang多模块开发的详细过程

    目录 Golang 多模块开发 前提条件 基本要求 本地环境 代码开发 创建模块 创建工作空间 修改源码 总结 Golang 多模块开发 今天学习下Golang中多模块的基础知识,学习多模块的运行原理,使用多模块的方式,可以让开发者的代码在其他多个模块中构建.运行.提高代码的复用,从而提高开发效率. 在今天的学习中,将在工作工作空间中创建两个模块,然后进行模块之间的引用,并运行程序结果. 前提条件 基本要求 Go 1.18 及更高版本 合适的编译工具 - text编辑器也满足要求 命令终端 -

  • 使用Vscode结合docker进行开发的详细过程

    前言 使用 Docker 与 VS Code 可以优化整个本地开发环境,加速项目进度过程.在所有环境中使用相同的基础映像,为所有开发人员提供相同的编辑器工具,可以更容易实现标准. 大型项目的团队首先必须确保安装依赖.内核版本这些开发环境是统一的.为了解决开发环境一致性的问题,常规传统的办法就是制定开发人员遵循制定指南,但是尽管如此实际开发过程还是会遇到各种障碍. 设置环境的常规方法如下图所示: 另一种解决方案是使用所有必需的库和依赖项预先配置的开发环境,开发人员可以在容器中分拆这些库和依赖项.然

  • vue3 中使用 jsx 开发的详细过程

    目录 安装 JSX 插件 使用语法差异 模板 指令 事件修饰符 v-for v-on 插槽 安装 JSX 插件 在 Vue2 中要想使用 jsx 开发,需要安装 @vue/babel-preset-jsx 等插件,之后在 babel 里指定即可,详细可以参考下面的 Vue2 GitHub 文档 Vue2:GitHub 文档 —— Babel Preset JSX 最近在使用 Vue3,突然想用 jsx 进行开发部分页面,顺便记录一下,也可以参考下面的 Vue3 GitHub 文档 Vue3:Gi

  • Win11平台安装和配置NeoVim0.8.2编辑器搭建Python3开发环境详细过程(2023最新攻略)

    目录 安装配置 第一个NeoVim插件 目录管理 终端配置 Python代码补全配置 结语 毫无疑问,我们生活在编辑器的最好年代,Vim是仅在Vi之下的神级编辑器,而脱胎于Vim的NeoVim则是这个时代最好的编辑器,没有之一.异步支持.更好的内存管理.更快的渲染速度.更多的编辑命令,是大神Thiago de Arruda对开发者们最好的技术馈赠. 之前一篇:Win10系统下安装编辑器之神(The God of Editor)Vim并且构建Python生态开发环境(2020年最新攻略),我们已经

  • Maven分模块开发与依赖管理和聚合和继承及属性深入详细介绍

    目录 前言 分模块开发 1.1 分模块开发理念 1.按照功能拆分 2.按照模块拆分 1.2 分模块开发实现 2.依赖管理 2.1 依赖传递与冲突问题 2.2 可选依赖和排除依赖 3.聚合和继承 3.1 聚合 3.2 继承 3.3 聚合VS继承 4.属性 4.1 定义父工程属性 4.2 修改依赖的version 5.配置文件加载属性 5.1 父工程定义属性 5.2 jdbc.properties文件中引用属性 5.3 设置maven过滤文件范围 前言 对于复杂庞大的项目,maven的熟练使用可以大

  • Qt图形图像开发之高性能曲线图模块QCustomplot库详细使用方法与实例(支持动、静曲线图)

    Qt曲线图模块QCustomPlot库介绍 QCustomPlot是一个小型的Qt画图标类,支持绘制静态曲线.动态曲线.多重坐标曲线,柱状图,蜡烛图等 前段时间用QChart模块画图,一条曲线上面放8000条数据就会卡的不行必须要换个其他的控件,后来找到了曲线图模块QCustomplot库 这个库性能非常好,画曲线图折线图柱状图动态静态,放大缩小,都很好用,10w条数据量无压力秒画出来一点也不卡 下载地址 https://www.qcustomplot.com/index.php/downloa

  • springboot+idea+maven 多模块项目搭建的详细过程(连接数据库进行测试)

    创建之前项目之前 记得改一下 maven  提高下载Pom速度 记得 setting 中要改 maven  改成 阿里云的.具体方法 网上查第一步 搭建parents 项目,为maven项目 ,不为springboot 项目 记得修改groupId 第二步 搭建多个子模块, honor-dao   honor-manager   honor-common记得创建 honor-manager 的时候 要把他的gruopId 改成com.honor.manager 这里爆红的原因是 因为 我做到后面

  • vscode搭建STM32开发环境的详细过程

    需要安装的软件 vscode 必装插件: C/C++:用于提供高亮显示和代码补全 Cortex-Debug:用于提供调试配置 make make工具可以直接下载xPack项目提供的windows-build-tools工具里面带了make工具. Release xPack Windows Build Tools v4.2.1-2 · xpack-dev-tools/windows-build-tools-xpack (github.com) openocd arm-none-eabi stm32

  • 基于Jupyter notebook搭建Spark集群开发环境的详细过程

    一.概念介绍: 1.Sparkmagic:它是一个在Jupyter Notebook中的通过Livy服务器 Spark REST与远程Spark群集交互工作工具.Sparkmagic项目包括一组以多种语言交互运行Spark代码的框架和一些内核,可以使用这些内核将Jupyter Notebook中的代码转换在Spark环境运行. 2.Livy:它是一个基于Spark的开源REST服务,它能够通过REST的方式将代码片段或是序列化的二进制代码提交到Spark集群中去执行.它提供了以下这些基本功能:提

  • Mac下Vs code配置Go语言环境的详细过程

    背景:最近受朋友介绍,学习Go语言.那么开始吧,首先从配置环境开始. 电脑:Mac Air,Vs code已经安装 一.Go下载和安装 下载地址:https://golang.google.cn/dl/ Mac版选择pkg,下载就可以直接安装了.其他类似操作,具体也可查找相关信息 二.验证版本 命令行: go version 显示安装版本,就正式完成了 三.Vs code配置Go环境 1.Go开发扩展 在Vs code 扩展直接搜索Go,进行安装即可 2.VS code中的Go工具 Vs cod

随机推荐