当您对外部模块的存储库进行了 fork (例如修复模块代码中的问题或添加功能)时,您可以让 Go 工具将您的 fork 用于模块的源代码.这对于测试您自己的代码的更改很有用.
为此,您可以使用go.mod 文件中的replace指令将外部模块的原始模块路径替换为存储库中 fork 的路径.这指示 Go 工具在编译时使用替换路径(fork 的位置),例如,同时允许您保留import 原始模块路径中的语句不变.
在以下 go.mod 文件示例中,当前模块需要外部模块example.com/theirmodule.然后该replace指令将原始模块路径替换为example.com/myfork/theirmodule模块自己的存储库的分支.
设置require/replace对时,使用 Go 工具命令确保文件描述的需求保持一致.使用go list命令获取当前模块正在使用的版本.然后使用go mod edit命令将需要的模块替换为fork:
注意: 当您使用该replace指令时,Go 工具不会像添加依赖项中所述对外部模块进行身份验证.
您可以使用go get命令从其存储库中的特定提交为模块添加未发布的代码.
以下示例提供了一些说明.这些基于源位于 git 存储库中的模块.
当您的代码不再使用模块中的任何包时,您可以停止将该模块作为依赖项进行跟踪.
要停止跟踪所有未使用的模块,请运行go mod tidy 命令.此命令还可能添加在模块中构建包所需的缺失依赖项.
要删除特定依赖项,请使用go get,指定模块的模块路径并附加 @none,如下例所示:
go get命令还将降级或删除依赖于已删除模块的其他依赖项.
如果您(或您的团队)已经设置或选择了您想要使用的不同模块代理服务器,您可能想要这样做.例如,有些人设置了模块代理服务器,以便更好地控制依赖项的使用方式.
您可以将变量设置为其他模块代理服务器的 URL,用逗号或管道分隔 URL.
GOPRIVATE或环境变量可以设置为匹配模块前缀的全局模式列表,这些GONOPROXY前缀是私有的,不应从任何代理请求.例如:
本教程介绍 Go 中多模块工作区的基础知识.使用多模块工作区,您可以告诉 Go 命令您正在同时在多个模块中编写代码,并轻松地在这些模块中构建和运行代码.
在本教程中,您将在共享的多模块工作区中创建两个模块,对这些模块进行更改,并在构建中查看这些更改的结果.
首先,为您要编写的代码创建一个模块.
①.、打开命令提示符并切换到您的主目录.
在 Linux 或 Mac 上:
在 Windows 上:
我们的示例将创建一个hello依赖于 golang.org/x/example 模块的新模块.
创建土嘎嘎的粉丝们大家好模块:
使用 . 添加对 golang.org/x/example 模块的依赖项go get.
在 hello 目录下创建 hello.go,内容如下:
现在,运行 hello 程序:
在这一步中,我们将创建一个go.work文件来指定模块的工作区.
在workspace目录中,运行:
该go work init命令告诉为包含目录中模块的工作空间go创建一个文件 .go.work./hello
该go命令生成一个go.work如下所示的文件:
该go.work文件的语法与go.mod相同.
该go指令告诉 Go 应该使用哪个版本的 Go 来解释文件.它类似于文件中的go指令go.mod .
该use指令告诉 Go在进行构建时hello目录中的模块应该是主模块.
所以在模块的任何子目录中workspace都会被激活.
Go 命令包括工作区中的所有模块作为主模块.这允许我们在模块中引用一个包,即使在模块之外.在模块或工作区之外运行go run命令会导致错误,因为该go命令不知道要使用哪些模块.
此时此刻呢,我们将golang.org/x/example模块的本地副本添加到工作区.然后,我们将向stringutil包中添加一个新函数,我们可以使用它来代替Reverse.
①.、克隆存储库
在工作区目录中,运行git命令来克隆存储库:
该go work use命令将一个新模块添加到 go.work 文件中.它现在看起来像这样:
该模块现在包括example.com/hello模块和 +golang.org/x/example 模块.
我们将向golang.org/x/example/stringutil包中添加一个新函数以将字符串大写.
将新文件夹添加到workspace/example/stringutil包含以下内容的目录:
修改workspace/hello/hello.go的内容以包含以下内容:
从工作区目录,运行
Go 命令在go.work文件指定的hello目录中查找命令行中指定的example.com/hello模块 ,同样使用go.work文件解析导入golang.org/x/example.
go.work可以用来代替添加replace 指令以跨多个模块工作.
由于这两个模块在同一个工作区中,所以呢很容易在一个模块中进行更改并在另一个模块中使用它.
现在,要正确发布这些模块,我们需要发布golang.org/x/example 模块,例如在v0.1.0. 这通常通过在模块的版本控制存储库上标记提交来完成.发布完成后,我们可以增加对 golang.org/x/example模块的要求hello/go.mod:
这样,该go命令可以正确解析工作区之外的模块.
本教程介绍了使用 Godatabase/sql及其标准库中的包访问关系数据库的基础知识.
您将使用的database/sql包包括用于连接数据库、执行事务、取消正在进行的操作等的类型和函数.
在本教程中,您将创建一个数据库,然后编写代码来访问该数据库.您的示例项目将是有关老式爵士乐唱片的数据存储库.
首先,为您要编写的代码创建一个文件夹.
运行go mod init命令,为其提供新代码的模块路径.
此命令创建一个 go.mod 文件,您添加的依赖项将在其中列出以供跟踪.
注意: 在实际开发中,您会指定一个更符合您自己需求的模块路径.有关更多信息,请参阅一下文章.
GO语言(二十五):管理依赖项(上)
GO语言(二十六):管理依赖项(中)
GO语言(二十七):管理依赖项(下)
此时此刻呢,您将创建一个数据库.
在此步骤中,您将创建要使用的数据库.您将使用 DBMS 本身的 CLI 创建数据库和表,以及添加数据.
您将创建一个数据库,其中包含有关黑胶唱片上的老式爵士乐录音的数据.
这里的代码使用MySQL CLI,但大多数 DBMS 都有自己的 CLI,具有类似的功能.
①.、打开一个新的命令提示符.
在命令行,登录到您的 DBMS,如下面的 MySQL 示例所示.
将以下 SQL 代码粘贴到文件中,然后保存文件.
在此 SQL 代码中:
(1)删除名为album表. 首先执行此命令可以让您更轻松地稍后重新运行脚本.
您将使用以下形式的source命令:
此时此刻呢,您将编写一些 Go 代码进行连接,以便进行查询.
现在你已经有了一个包含一些数据的数据库,开始你的 Go 代码.
找到并导入一个数据库驱动程序,该驱动程序会将您通过database/sql包中的函数发出的请求转换为数据库可以理解的请求.
①.、在您的浏览器中,访问SQLDrivers wiki 页面以识别您可以使用的驱动程序.
在此代码中:
(1)将您的代码添加到main包中,以便您可以独立执行它.
导入驱动程序后,您将开始编写代码以访问数据库.
现在编写一些 Go 代码,让您使用数据库句柄访问数据库.
您将使用指向结构的指针sql.DB,它表示对特定数据库的访问.
编写代码
①.、进入 main.go,在import您刚刚添加的代码下方,粘贴以下 Go 代码以创建数据库句柄.
该Config结构使代码比连接字符串更容易阅读.
为了简化代码,您调用log.Fatal结束执行并将错误打印到控制台.在生产代码中,您会希望以更优雅的方式处理错误.
文件的顶部现在应该如下所示:
①.、开始跟踪 MySQL 驱动程序模块作为依赖项.
使用go get 添加 github.com/go-sql-driver/mysql 模块作为您自己模块的依赖项.使用点参数表示"获取当前目录中代码的依赖项".
连接成功了!
此时此刻呢,您将查询一些数据.
我并没有什么编程的经验,觉得编程实在是太复杂了,不喜欢去研究太多,对这个也不怎么懂,只能说自己是个半吊子,就是所掌握的知识,也是东拼西凑的,朋友和我说点儿,自己去书上看一点儿,只能说根据自己的体验给出一些体会吧.
Rust的优势是:
①.、Rust把安全、精确的内存管理作为一切的中心放在首要的位置.
Rust的劣势是:
①.、 语言相对来说比较复杂,对于新手来说,让新手摸不着头脑.
其实我觉得什么代码啊编程啊这些东西还是比较适合理工的学生去研究,我一看脑袋就大,完全不明白在讲什么.我大概了解的就是这些,语言的话大家可以多方面的去了解,也不是说有缺点就是不好,看配置看个人吧,每个人习惯不一样,也许有的人用不稳定的还觉得挺好呢,有的人就喜欢比较完美的,在我看来编程这个东西真的是很复杂,会有很多的代码,这些代码弄得我自己头都大了,有的时候还得去恶补一下.
很多朋友可能知道Go语言的优势在哪,却不知道Go语言适合用于哪些地方.
①.0、 Tsuru:开源的PAAS平台,和SAE实现的功能一模一样.
以上的就是关于go语言能做什么的内容介绍了.