首页 > 其他分享 >go modules

go modules

时间:2024-04-08 17:11:36浏览次数:23  
标签:quote modules rsc io go main mod

目录


    在一个空文件夹下,初始化一个 Module

    $ go mod init example
    go: creating new go.mod: module example
    

    此时,在当前文件夹下生成了go.mod,这个文件记录当前模块的模块名以及所有依赖包的版本。

    接着,我们在当前目录下新建文件 main.go,添加如下代码:

    package main
    
    import (
    	"fmt"
    
    	"rsc.io/quote"
    )
    
    func main() {
    	fmt.Println(quote.Hello())  // Ahoy, world!
    }
    

    运行 go run . ,输出如下

    main.go:6:2: no required module provides package rsc.io/quote; to add it:
            go get rsc.io/quote
    

    手动执行第三方包 rsc.io/quote的下载,具体的版本信息也记录在了go.mod中

    module example
    
    go 1.22.2
    
    require rsc.io/quote v1.5.2
    
    require (
    	golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c // indirect
    	rsc.io/sampler v1.3.0 // indirect
    )
    

    在 go.mod 的第5行是直接依赖,后面的 // indirect 是间接依赖

    可以通过go list -m all列出当前模块和所有依赖

    $ go list -m all
    example
    golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
    rsc.io/quote v1.5.2
    rsc.io/sampler v1.3.0
    

    第一行是当前模块,也称为主模块。后面的是依赖,依赖包含名称和版本号,第一个依赖是伪版本号,后面的是正常的语义版本标签。

    go.sum 中包含了模块的哈希值

    golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c h1:qgOY6WgZOaTkIIMiVjBQcw93ERBE4m30iBm00nkL0i8=
    golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
    rsc.io/quote v1.5.2 h1:w5fcysjrx7yqtD/aO+QwRjYZOKnaM9Uh2b40tElTs3Y=
    rsc.io/quote v1.5.2/go.mod h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe+TKr0=
    rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4=
    rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
    

    我们在当前目录,添加一个子 package calc,代码目录如下:

    demo/
       |--calc/
          |--calc.go
       |--main.go
    

    在 calc.go 中写入

    package calc
    
    func Add(num1 int, num2 int) int {
    	return num1 + num2
    }
    

    在 package main 中如何使用 package cal 中的 Add 函数呢?import 模块名/子目录名 即可,修改后的 main 函数如下:

    package main
    
    import (
    	"fmt"
    	"example/calc"
    
    	"rsc.io/quote"
    )
    
    func main() {
    	fmt.Println(quote.Hello())
    	fmt.Println(calc.Add(10, 3))
    }
    
    $ go run .
    你好,世界。
    13
    

    标签:quote,modules,rsc,io,go,main,mod
    From: https://www.cnblogs.com/yubo-guan/p/18121748

    相关文章

    • go reflect
      goreflect反射核心反射的核心是两个对象,分别是reflect.Type和reflect.Value。它们分别代表了go语言中的类型和值。我们可以通过reflect.TypeOf和reflect.ValueOf来获取到一个变量的类型和值。funcmain(){ vara=1 fmt.Println(reflect.ValueOf(a)) fmt.Print......
    • python计算机毕设【附源码】基于Android开发的智能音乐播放系统(django+mysql+论文)
      本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着移动互联网的飞速发展,智能手机已经成为人们日常生活中不可或缺的一部分。在众多手机应用中,音乐播放系统是用户使用频率较高的应用之一。传统的音乐播放......
    • How to change Google Chrome DevTools codes highlight theme color All In One
      HowtochangeGoogleChromeDevToolscodeshighlightthemecolorAllInOne如何更改GoogleChromeDevTools代码高亮主题颜色demosLightPink(......
    • Django框架之序列化组件
      一、为什么要序列化呢?我们在写一些项目前后端是分离的,这意味着无法直接利用django提供的模版语法来实现前后端的数据交互,需要将数据转换成前后端都能接收处理的格式,即json,一般的格式都是列表套字典。那么我的前端想拿到由ORM得到的数据库里面的一个个用户对象,而我的后端也想直接......
    • Django框架之批量插入数据
      一、项目需求浏览器中访问django后端某一条url(如:127.0.0.1:8080/index/)实时朝数据库中生成一千条数据并将生成的数据查询出来并展示到前端页面二、数据准备创建模型表classBook(models.Model):title=models.CharField(max_length=32)三、单条插入数据1......
    • 蓝桥杯练习系统(算法训练)ALGO-963 转圈游戏
      资源限制内存限制:128.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述n个小伙伴(编号从0到n-1)围坐一圈玩游戏。按照顺时针方向给n个位置编号,从0到n-1。最初,第0号小伙伴在第0号位置,第1号小伙伴在第1号位置,……,依此类推。游戏规......
    • 蓝桥杯练习系统(算法训练)ALGO-962 积木大赛
      资源限制内存限制:128.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述THU幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi。在搭建开始......
    • 基于项目的协同过滤推荐算法(Item-Based Collaborative Filtering Recommendation Alg
      前言协同过滤推荐系统,包括基于用户的、基于项目的息肉通过率等,今天我们读一篇基于项目的协同过滤算法的论文。今天读的论文为一篇名叫《基于项目的协同过滤推荐算法》(Item-BasedCollaborativeFilteringRecommendationAlgorithms)。摘要Recommendersystemsapplyknowledg......
    • mongo prisma
      prisma要求mongo服务必须是集群,需要有副本集执行事务。本地开发环境安装了一个debian12虚拟机:在debian12系统中, 安装docker,docker-compose下载mongo镜像:dockerpullmongo创建配置文件docker-compose.yml:version:'3'services:mongo:container_name:mong......
    • Django框架之视图层
      一、三板斧的原理介绍1、HttpResponse在Django中,HttpResponse是一个类,用于构建HTTP响应并返回给客户端。当视图函数处理完请求后,需要返回一个响应时,就会使用HttpResponse对象。(1)创建HttpResponse对象fromdjango.httpimportHttpResponseresponse=HttpResponse(content="......