啥?Goland支持泛型了?

2024-05-25 14:58
文章标签 支持 泛型 goland

本文主要是介绍啥?Goland支持泛型了?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

事情出因

一大早上被一篇公众号的推文震惊了,Goland竟然支持go的泛型了。据我所知:

  1. Go的泛型不是还在设计草图吗?最乐观估计也要2021年8月份。
  2. 你说Go语言现在都没开发好泛型,你支持这个特性有什么用呢?

带着好奇心点开推文,没发现对泛型的说明,只看到一个Goland对泛型的使用的说明链接: https://blog.jetbrains.com/go/2020/11/24/experimenting-with-go-type-parameters-generics-in-goland/,心里怪痒痒的,忍不住点开看了,恍然大悟。
虽然Go并没有完整实现好泛型,但是却有个go2go工具的build工具,能把泛型代码编译成二进制可执行文件。话不多说,试试它。

准备和我的环境

  1. 下载现在最新的Goland工具:2020.3
  2. macos Big Sur 系统
  3. git version 2.21.0
  4. 你可能要科学上网

上机实操

大致流程如下:

  1. 检出最新的Go代码的泛型实现的分支
  2. 编译该分支得到一些工具,用来支持泛型
  3. 在Goland里面配置泛型编译工具

科学拉取go源码

由于Go的源码的git仓库地址是https://go.googlesource.com/go,却不在GitHub上,这就有点头疼了。所以前提是你有科学上网工具。我介绍下我的步骤。

  1. 查看你本地代理的代理端口,如我的端口是1087,所以我在我让我的终端也会走代理,因为一般来说科学上网工具只会代理浏览器。

    export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;
    
  2. 然后检出https://go.googlesource.com/go到go-mainline目录,并切换分支到

    git clone https://go.googlesource.com/go go-mainline
    
  3. 此时用Goland打开该go源码,检出分支dev.go2go。
    在这里插入图片描述
    在这里插入图片描述

  4. 然后为Goland配置些环境变量
    ①、在Settings/Preferences | Go | GOROOT, 选择No SDK 选项
    ②、在Settings/Preferences | Tools | Terminal, 添加下面的环境变量:GOROOT_BOOTSTRAP为版本大于1.14的Go sdk(我直接用的是1.15)、CGO_ENABLED=0
    在这里插入图片描述
    在这里插入图片描述

  5. 然后在Goland的控制台下,进入到源码的src下,执行

    bash make.bash
    

    如果你是windows系统,那么就用bash.bat
    然后等待一会儿,你能明显听见CPU风扇的声音。

  6. 上面工具都编译好只有,接下来就新建个项目试一下吧,下面我就抛砖引玉了。
    在这里插入图片描述
    上面是我新建的一个项目,如果你的代码的后缀不是.go2的话请改成.go2,.go2就表示里面用了go2的语法,也就包括了泛型,这里我测试泛型。(看后缀就能看出来官方的决心了,go2一定是会有泛型的)

  7. 此时还没完,可以给Goland加个快捷工具,当然也可以不加在命令行执行,把go2泛型代码编译成二进制文件,到时候我们就可以执行该二进制文件查看泛型代码的结果。

    program我这里是Users/shen/go-mainline/go,这个就是我上面拉取go的源码编译得到的。
    在这里插入图片描述
    在这里就会找到这个命令,执行他就会获得编译好的二进制文件。
    在这里插入图片描述

  8. 最后在命令行就能获得结果。在这里插入图片描述

  9. 说说我体验下来Goland的感受:
    ①、并没有想象中那么好用,甚至连最简单的使用都够呛,如看我的截图,它最any的关键字都提示不支持,你说这。。。
    ②、当我要运行泛型代码的时候,还需要自己配置编译工具,这种体验我觉得就没必要说支持了吧,难道是我还没有使用对,可是我明明按照官方的文档来操作的啊。<

这篇关于啥?Goland支持泛型了?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001832

相关文章

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

Java泛型类型解析

解析泛型类型 获取字段泛型类型 **java.lang.reflect.Field#getGenericType**: 作用:返回字段的泛型类型。返回类型:Type。如果字段是一个泛型类型,这个方法将返回一个表示这个泛型类型的 Type 对象,比如 ParameterizedType,TypeVariable 等等。如果字段不是泛型类型,这个方法将返回字段的具体类型,即 Class 对象。示例

Science Robotics 首尔国立大学研究团队推出BBEX外骨骼,实现多维力量支持!

重复性举起物体可能会对脊柱和背部肌肉造成损伤,由此引发的腰椎损伤是工业环境等工作场所中一个普遍且令人关注的问题。为了减轻这类伤害,有研究人员已经研发出在举起任务中为工人提供辅助的背部支撑装置。然而,现有的这类装置通常无法在非对称性的举重过程中提供多维度的力量支持。此外,针对整个人体脊柱的设备安全性验证也一直是一个缺失的环节。 据探索前沿科技边界,传递前沿科技成果的X-robot投稿,来自首尔国立

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html