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

开发 前端
GoLand 现在可以通过 Docker、SSH 和 WSL 2 远程构建和运行程序。具体就是,你可以在本地编写 Go 代码,然后在远程的某个机器运行你的代码,而且支持 Windows 下的 Linux 子系统 WSL 2。

[[392209]]

大家好,我是站长 polarisxu。

jetbrains 官方刚发布了 GoLand 2021.1 版本。这个版本有些重磅的特性值得关注。

我安装试用了下,发现启动界面变了(jetbrains 系列 IDE 启动界面都变了)。

01 远程构建和运行程序

VSCode 的朋友们可能要说:切,这个功能,VSCode 早就有了。。。

GoLand 现在可以通过 Docker、SSH 和 WSL 2 远程构建和运行程序。具体就是,你可以在本地编写 Go 代码,然后在远程的某个机器运行你的代码,而且支持 Windows 下的 Linux 子系统 WSL 2。

配置远程构建和运行,有如下两种方式:

1)通过 Run 菜单,Manage Targets… 配置 Run 目标。

2)或通过 Run 菜单,Edit Configuration… 然后在以下界面 “Run on” 右侧有 “Manage targets”,同样可以配置 Run 目标;或者直接通过以下界面 Create New Targets 或选择 Saved targets。

以上两种方式,如果点击 Manage targets,则会进入以下的 Run Targets 界面:

通过以上的配置后,Run on 选择你想运行的目标,下次 Run 时候就在对应目标上运行了。(为什么没有 WSL 2?因为我不是 Windows 系统)

运行后,你可以去远端目标确认,是否有文件(源文件和编译的临时文件等)。

02 对 Go1.16 的支持

这里说的 Go1.16 的支持,主要是指对 //go:embed 的支持。要特别提醒的是,Go1.16 很多特性,GoLand 其他版本都是支持的,因为没有太多特别的。而这里要说的是,对 //go:embed 这个指令的支持,GoLand 2021.1 可以对它进行提示。如下图:

此外,对指令提供代码高亮显示,从嵌入指令内部的引用导航到项目中的文件和文件夹等。同时 GoLand 还会进行代码检查,比如,如果你试图将文件嵌入到错误类型的变量中,GoLand 会提示出来。(注意只有导入 embed 包后才会高亮显示等,当然,导入该包也可以根据 GoLand 提示快速导入)

03 快速处理错误

Go 语言中,错误处理被吐槽比较多。if err != nil 写到手软。

如下代码:

  1. func main() { 
  2.  testErrorHandle() 
  3.  
  4. func testErrorHandle() error { 
  5.  return errors.New("This is error"

在 main 中对 testErrorHandle 的调用,需要处理 error,怎么办?鼠标停留在 testErrorHandle 的调用处,会出现提示:

点击 Handle error,会自动变成:

  1. err := testErrorHandle() 
  2. if err != nil { 
  3.   return  

不用自己手写了。(也可以通过快捷键实现,Handle error 后面就是对应的快捷键)

04 基于 JSON 生成 struct

微信群里,经常有人问类似这样的问题:

针对这段 JSON 如何定义 struct?

因为这样的需求挺多,所有网上有很多类似的工具,比如 https://mholt.github.io/json-to-go/。现在这样的需求,GoLand 直接帮你解决了。

比如有如下 JSON:

  1.  name"polarisxu"
  2.  wechat: "gopherstudio" 

你复制粘贴到 GoLand 的某个 Go 文件中,会弹出一个对话框,提示你是否要转为 struct:

确认后,生成如下 struct(struct 名称默认是 T,进行修改即可):

  1. type T struct { 
  2.  Name   string `json:"name"
  3.  Wechat string `json:"wechat"

相当方便了。

此外,在 tag 字段,按下 Alt+Enter(或 option + Enter,Mac 下),会出现 context actions 对话框,可以进行相关的操作修改,比如修改字段名。很方便。

05 其他特性

还有其他较多特性,我没有一一试验。这里列举一下:

  • 为 struct 字段生成 getter 和 setter。好吧,感觉 Go 不太需要;
  • 自动做强制类型转换。比如 int32 类型赋值给 int64;
  • 重构 go.mod 文件;
  • 更好的格式化;
  • Code With Me。这是多人协作的功能。

本文转载自微信公众号「polarisxu」,可以通过以下二维码关注。转载本文请联系polarisxu公众号。

 

责任编辑:武晓燕 来源: polarisxu
相关推荐

2009-02-13 09:19:23

试用报告MoonlightSilverlight

2020-10-21 10:01:47

HiSpark Wi-智能家居套件

2009-07-24 17:13:25

Expression

2009-06-24 11:13:26

2020-11-17 12:15:36

MQTT开发

2015-01-26 09:47:53

Windows 10

2020-11-03 09:53:04

体验官方固件程序

2012-06-15 16:57:54

微疯客

2011-09-14 17:48:48

2020-11-23 09:32:43

WIFI连接

2009-10-19 20:36:01

手机安全360手机卫士

2009-07-27 10:35:20

2014-08-21 10:34:11

Java 9Java

2020-11-25 11:55:47

FlappyBird

2020-10-29 09:53:06

Hi3861硬件开发板

2021-01-21 12:23:06

人工智能机器学习技术
点赞
收藏

51CTO技术栈公众号