macgo语言 macbookpro语言( 四 )


该go命令生成一个go.work如下所示的文件:
该go.work文件的语法与go.mod相同 。
该go指令告诉 Go 应该使用哪个版本的 Go 来解释文件 。它类似于文件中的go指令go.mod。
该use指令告诉 Go在进行构建时hello目录中的模块应该是主模块 。
所以在模块的任何子目录中workspace都会被激活 。
2、运行工作区目录下的程序
在workspace目录中,运行:
Go 命令包括工作区中的所有模块作为主模块 。这允许我们在模块中引用一个包,即使在模块之外 。在模块或工作区之外运行go run命令会导致错误,因为该go命令不知道要使用哪些模块 。
接下来,我们将golang.org/x/example模块的本地副本添加到工作区 。然后,我们将向stringutil包中添加一个新函数,我们可以使用它来代替Reverse.
在这一步中,我们将下载包含该模块的 Git 存储库的副本golang.org/x/example,将其添加到工作区,然后向其中添加一个我们将从 hello 程序中使用的新函数 。
1、克隆存储库
在工作区目录中,运行git命令来克隆存储库:
2、将模块添加到工作区
该go work use命令将一个新模块添加到 go.work 文件中 。它现在看起来像这样:
该模块现在包括example.com/hello模块和 `golang.org/x/example 模块 。
这将允许我们使用我们将在模块副本中编写的新代码,而不是使用命令stringutil下载的模块缓存中的模块版本 。
3、添加新功能 。
我们将向golang.org/x/example/stringutil包中添加一个新函数以将字符串大写 。
将新文件夹添加到workspace/example/stringutil包含以下内容的目录:
4、修改hello程序以使用该功能 。
修改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命令可以正确解析工作区之外的模块 。
Mac下交叉编译linux golang程序一、背景介绍
闲来无事macgo语言 , 申请了台aws服务器在家搞点小东东,用golang做了个小东东,想放上去 。自己macgo语言的电脑是mac电脑,起初忘记了交叉编译的事 , 直接编译了下直接扔到aws,运行的时候出现了不可以运行的二进制格式提示 。
二、交叉编译的过程
1、随手百度了下,很多文章都写的“CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build”(不知macgo语言你搜索到的是不是这个结果),看到这也挺简单,分别是禁用cgo,指定目标系统,指定目标CPU体系架构,然后编译 。
按照百度出来的建议,尝试在电脑上编译了下,提示如下错误 , 如果没有出现错误的可以不用往下看了哈 。
2、如第一步所述,是将CGO关闭的状态 , 如果程序用到了CGO,是不是就需要将CGO放开macgo语言?将CGO放开又会是什么现象?具体如下:
从上述的错误信息可以看出来 , 环境变量是生效的,确实是linux体系架构了 。
3、继续百度,终于发现这篇文章非常不错,在这里和大家分享下 , 按照文章的操作就可以解决问题了,而且里面有非常详细的讲解 。

推荐阅读