GoLand 2021.1 重磅发布:新特性试用报告

polaris · · 3891 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

大家好,我是站长 polarisxu。 jetbrains 官方刚发布了 GoLand 2021.1 版本。这个版本有些重磅的特性值得关注。 我安装试用了下,发现启动界面变了(jetbrains 系列 IDE 启动界面都变了)。 ![goland-icon.png](https://static.studygolang.com/210409/71c1b968f23db15473292c9cf5d78f66.png) ## 01 远程构建和运行程序 VSCode 的朋友们可能要说:切,这个功能,VSCode 早就有了。。。 GoLand 现在可以通过 Docker、SSH 和 WSL 2 远程构建和运行程序。具体就是,你可以在本地编写 Go 代码,然后在远程的某个机器运行你的代码,而且支持 Windows 下的 Linux 子系统 WSL 2。 配置远程构建和运行,有如下两种方式: 1)通过 Run 菜单,Manage Targets… 配置 Run 目标。 ![run-menu.png](https://static.studygolang.com/210409/d289f6e0b4cc1f882a751ca16621e55a.png) 2)或通过 Run 菜单,Edit Configuration… 然后在以下界面 “Run on” 右侧有 “Manage targets”,同样可以配置 Run 目标;或者直接通过以下界面 Create New Targets 或选择 Saved targets。 ![build-config-run-manage.png](https://static.studygolang.com/210409/267eba3ad00012b1f38b928cfba41607.png) 以上两种方式,如果点击 Manage targets,则会进入以下的 Run Targets 界面: ![run-targets-windows.png](https://static.studygolang.com/210409/495346a076cde31ecd2d0f46505a4596.png) 通过以上的配置后,Run on 选择你想运行的目标,下次 Run 时候就在对应目标上运行了。(为什么没有 WSL 2?因为我不是 Windows 系统) 运行后,你可以去远端目标确认,是否有文件(源文件和编译的临时文件等)。 ## 02 对 Go1.16 的支持 这里说的 Go1.16 的支持,主要是指对 `//go:embed` 的支持。要特别提醒的是,Go1.16 很多特性,GoLand 其他版本都是支持的,因为没有太多特别的。而这里要说的是,对 `//go:embed` 这个指令的支持,GoLand 2021.1 可以对它进行提示。如下图: ![go-embed.png](https://static.studygolang.com/210409/443cd1478b7346366b27da243f0c912d.png) 此外,对指令提供代码高亮显示,从嵌入指令内部的引用导航到项目中的文件和文件夹等。同时 GoLand 还会进行代码检查,比如,如果你试图将文件嵌入到错误类型的变量中,GoLand 会提示出来。(注意只有导入 embed 包后才会高亮显示等,当然,导入该包也可以根据 GoLand 提示快速导入) ## 03 快速处理错误 Go 语言中,错误处理被吐槽比较多。`if err != nil` 写到手软。 如下代码: ```go func main() { testErrorHandle() } func testErrorHandle() error { return errors.New("This is error") } ``` 在 main 中对 testErrorHandle 的调用,需要处理 error,怎么办?鼠标停留在 testErrorHandle 的调用处,会出现提示: ![test-error.png](https://static.studygolang.com/210409/6dee2f5866952cabb41dc76fefa8b6ab.png) 点击 Handle error,会自动变成: ```go err := testErrorHandle() if err != nil { return } ``` 不用自己手写了。(也可以通过快捷键实现,Handle error 后面就是对应的快捷键) ## 04 基于 JSON 生成 struct 微信群里,经常有人问类似这样的问题: > 针对这段 JSON 如何定义 struct? 因为这样的需求挺多,所有网上有很多类似的工具,比如 <https://mholt.github.io/json-to-go/>。现在这样的需求,GoLand 直接帮你解决了。 比如有如下 JSON: ```json { name: "polarisxu", wechat: "gopherstudio" } ``` 你复制粘贴到 GoLand 的某个 Go 文件中,会弹出一个对话框,提示你是否要转为 struct: ![gen-struct.png](https://static.studygolang.com/210409/29b25263a7c7d143740d0fd28a6975cc.png) 确认后,生成如下 struct(struct 名称默认是 T,进行修改即可): ```go type T struct { Name string `json:"name"` Wechat string `json:"wechat"` } ``` 相当方便了。 此外,在 tag 字段,按下 Alt+Enter(或 option + Enter,Mac 下),会出现 context actions 对话框,可以进行相关的操作修改,比如修改字段名。很方便。 ## 05 其他特性 还有其他较多特性,我没有一一试验。这里列举一下: - 为 struct 字段生成 getter 和 setter。好吧,感觉 Go 不太需要; - 自动做强制类型转换。比如 int32 类型赋值给 int64; - 重构 go.mod 文件; - 更好的格式化; - Code With Me。这是多人协作的功能。之前在[介绍 Atom](https://mp.weixin.qq.com/s/twGr49fAqRG8UguZ_9TiiA) 的时候我提到过类似的功能; - 阅读模式; - 。。。 更多完整的特性,可以参考官方发布的文章:<https://www.jetbrains.com/go/promo/whatsnew/>。 对新版的新特性,你有什么想说的吗?欢迎留言交流!

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3891 次点击  
加入收藏 微博
6 回复  |  直到 2021-05-27 10:26:55
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传