手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Go 1.11添加实验性的WebAssembly、模块等特性

[日期:2018-09-05] 来源:infoq.com  作者:Sergio De Simone ,译者 张卫滨 [字体: ]

Go 1.11的两个主要特性是WebAssembly模块,不过这两个特性依然处于实验性阶段。

模块为GOPATH提供了替代方案,用来为项目定位依赖和管理版本化。如果go命令在$GOPATH/src之外的目录中运行,并且该目录中有一个模块的话,那么模块功能就会启用,否则go将会使用GOPATH。Google的Russ Cox 这样说到

Go模块是包的一个集合,它们共享通用的导入路径前缀,也就是所谓的模块路径。模块是进行版本化的单元,模块版本是通过语义化(semantic)版本字符串进行定义的。在使用Git进行开发的时候,开发人员通过为模块的Git仓库添加标签来定义新的语义化版本。尽管强烈推荐使用语义化的版本,但是依然支持引用特定的提交。

模块是通过go mod创建的,位于模块根目录下的go.mod文件对其进行了定义,该文件列出了所有需要的包及其版本号。例如,下面是一个简单的模块定义,它声明了模块的基础路径以及两个依赖,该模块是通过go mod -init -module example.com/m创建的:

    module example.com/m

    require (
        golang.org/x/text v0.3.0
        gopkg.in/yaml.v2 v2.1.0
    )

存在go.mod文件之后,像go buildgo testgo list这样的命令将会自动添加新的依赖以满足导入的要求。例如,在你的主包中导入rsc.io/quote,然后执行go run将会添加require rsc.io/quote v1.5.2go.mod中。类似的,go get命令会更新go.mod,以便于修改构建中所使用的模块版本,它可能会升级或降级级联依赖。

关于模块语法的更多细节可以通过go help modules来查阅。至少在Go 1.12之前,这个特性都将会处于实验性阶段,Go团队会努力保持兼容性。一旦模块稳定之后,对GOPATH的支持将会被移除掉。

支持WebAssembly的目标在于让Go程序能够在Web浏览器中运行。我们可以编译Go程序使其能够在Web中运行:GOARCH=wasm GOOS=js go build -o test.wasm main.go。这将会生成三个文件:wasm_exec.htmlwasm_exec.jstest.wasm,我们可以将其部署到HTTP服务器中或者在浏览器中加载路径。js包可以用来进行DOM操作。 

要了解Go 1.11的完整变更,请查阅官方发布说明,通过该网址可以进行下载。

查看英文原文:Go 1.11 Adds WebAssembly, Experimental Module Support, and More

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-09/153882.htm

linux
相关资讯       Go 1.11 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款