首页 > 其他分享 >多模块工作区

多模块工作区

时间:2022-12-01 11:22:20浏览次数:50  
标签:workspace hello golang 工作 模块 example go stringutil

1.创建实例和创建workspace

mkdir workspace
cd workspace

mkdir hello
cd hello
go mod init example.com/hello
go get golang.org/x/example # go get添加对 golang.org/x/example 模块的依赖项.

在 hello 目录下创建 hello.go,内容如下:

package main

import (
    "fmt"

    "golang.org/x/example/stringutil"
)

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

现在,运行 hello 程序:

$ go run example.com/hello
olleH

创建workspace:

cd ..
go work init ./hello 

生成了一个go.work文件,内容如下:

go 1.18

use ./hello

use指令告诉 Go,在执行构建时,hello 目录中的模块应该是主模块。因此,在 workspace的任何子目录中,此模块都会被激活。也就是说即使不在hello目录下,也可成功运行go run example.com/hello

2.下载和修改 golang.org/x/example 模块

git clone https://go.googlesource.com/example
go work use ./example

go.work变为:

go 1.18

use (
    ./hello
    ./example
)

下面,我们将向golang.org/x/example/stringutil包中添加一个新函数以将字符串变大写。
在 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)
}

修改 workspace/hello/hello.go 的内容以包含以下内容:

package main

import (
    "fmt"

    "golang.org/x/example/stringutil"
)

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

在工作区运行代码

$ go run example.com/hello
HELLO

标签:workspace,hello,golang,工作,模块,example,go,stringutil
From: https://www.cnblogs.com/codingbigdog/p/16940856.html

相关文章

  • 测试工作中的测试用例设计
    测试工作中的测试用例设计测试工作的最核心的模块,在执行任何测试之前,首先必须完成测试用例的编写。测试用例是指导你执行测试,帮助证明软件功能或发现软件缺陷的一种......
  • Python高级-import导入模块-笔记
    1.import搜索路径路径搜索从上面列出的目录里依次查找要导入的模块文件''表示当前路径列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序程序执行时添加......
  • Teamcenter AWC6.2 添加分类管理模块支持
    1.安装AWC基本模块,配置搜索ConfiguretraditionalbasicclassificationIfyouhaveatraditionalbasicclasshierarchyanddatainrichclient,youcane......
  • 关于python的copy模块内的浅拷贝和深拷贝
    Python中赋值语句不复制对象,而是在目标和对象之间创建绑定(bindings)关系,即复制的是对象的引用。对于自身可变(如列表)或者包含可变项的集合对象(如嵌套列表),有必要生成......
  • 【杂谈】LCD1602液晶显示模块
      这几天弄单片机的课设,正好需要用到1602这个模块,简单整理一下,方便以后回忆。 前言  关于1602的读时序和写时序在网上可以轻易找到介绍,这里不做过多讲解,这里只讲解......
  • python的socket模块
        socket参数使用##socket参数使用参数一:地址簇socket.AF_INETIPv4(默认)socket.AF_INET6IPv6socket.AF_UNIX只能够用于单一的Unix系统......
  • 分享给知识工作者的"四库"
    学习工作多年,有一点心得体会与大家分享。知识工作者应当并尽早建立自己的四个库,来支持自己的不断成长。第一个是知识库,储存着经过个人消化并重新组织的、结构化的......
  • Pytest - 使用pytest-xdsit 插件运行后 logging 模块日志不会输出的问题
    背景:自己写的日志打印模块,用pytest-n=auto后日志就不会输出#tools.set_loggging.pyimportlogging.handlersimportsysfromconcurrent_log_handlerimportConc......
  • 博云DevOps 3.0重大升级 | 可用性大幅提升、自研需求管理&自定义工作流上线,满足客户多
    DevOps能够为企业带来更高的部署频率、更短的交付周期与更快的客户响应速度。标准化、规范化的管理流程,可视化和数字化的研发进度管理和可追溯的版本也为企业带来的了更多的......
  • springboot缓存之缓存工作原理
    核心:使用CacheManager[ConcurrentMapCacheManager]按照名字得到Cache[ConcurrentMapCache]组件    key使用keyGenerator生成的,默认是SimpleKeyGenerator   ......