首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对于GO 1.18泛型设计,各位大佬怎么看待它的设计呢?

对于GO 1.18泛型设计,各位大佬怎么看待它的设计呢?

泛型是一种允许程序员编写可重用代码的技术,它允许程序员编写可重用的代码,而不需要关注具体的数据类型。在GO 1.18中,泛型设计得到了增强,使得程序员可以更加灵活地编写代码,并且可以更加容易地重用代码。

GO 1.18泛型设计的优点包括:

  1. 更强的类型安全性:泛型可以在编译时检查类型,从而提高程序的可靠性和安全性。
  2. 更好的代码重用:泛型可以减少代码的重复,从而提高代码的可维护性和可读性。
  3. 更好的性能:泛型可以减少代码的运行时开销,从而提高程序的性能。

GO 1.18泛型设计的缺点包括:

  1. 学习曲线陡峭:泛型是一种新的技术,需要程序员花费一定的时间来学习和掌握。
  2. 编译时间增加:泛型可能会导致编译时间的增加,从而影响开发效率。

总的来说,GO 1.18泛型设计是一项重要的技术创新,它可以提高程序的可靠性、可维护性和性能,同时也带来了一些挑战,例如学习曲线的陡峭和编译时间的增加。各位大佬对于GO 1.18泛型设计的看法可能因个人经验和技术背景而异,但是总体来说,这是一项值得推广和应用的技术。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

五分钟技术小分享 - 2022Week01

2022-01 2022-01-04 Go1.18概览 在2021年年底,Go推出了1.18Beta版本。...由于正式版本没有完全敲定,普通开发人员没有必要研究到底层实现,但如果能先形成一个全局上认知,能帮助我们领先一步。 关于1.18核心改动,是 对(Generics)支持。...Go语言语法比较简单,如下: type numeric interface { type int, int8, int16, int32, int64, uint, uint8, uint16,...,Go如何应用在工程中、尤其是复杂工程中,需要一定实践摸索,并总结规律(可借鉴其余支持语言); 除了,另外一个比较大特性就是Fuzzy Testing。...但从基金会来看,提供了一整套生态,非常有助于落地。 那么,如何认识这五块

28620

已经被迅速采用,错误处理是新大挑战|Go 开发者调查报告

主要发现 已经得到迅速接纳。大多数受访者都知道 Go 1.18 版本中引入了,约四分之一受访者称已经在实际代码中使用。...大多数开发者对发布赞赏有加,但也有部分受访者发现目前设计限制太多。 Fuzzing 对大多数 Go 开发者来说仍是新鲜事物。... 支持类型参数(即 Go 1.18 发布之后,我们希望大家如何看待和采用这项新功能,并确定使用常见挑战或障碍。 绝大多数受访者(86%)都知道 Go 1.18 版本引入了。...对于给出肯定答案受访者,我们又进一步提出问题,例如当时是怎么发现漏洞、如何调查及 / 或解决,以及整个过程中哪些环节最为棘手。 首先,我们发现漏洞扫描确有成效。...总之,除了之外,Go 开发者还需要面对坎坷前进道路。 总    结 本次 Go 开发者调查主要侧重于 Go 1.18 版本中新功能。

25910

为什么会让你Go程序变慢

这是迄今为止实最简单,同时对于编译器来讲也带来开销 历史上,单态化一直是在系统语言(如C++、D或Rust)中实现首选设计。...好吧,这种设计名字破坏了我们想法:gcshape 并不知道方法函数,所以我们需要讨论由此引出 dictionaries 字典 当前 go1.18 实现,每次调用型函数时,都会把一个静态 dictionaries...这是一个阴险问题,产生于 Go 中 len 返回值是有符号,可能值得发表自己博客 ... 不管怎么说,这个 Valid 函数代码总体上看是相当不错。...尽管 Go 编译器复杂度不高,但很明显可以衡量是,从 1.0 开始,生成代码在每个版本上都在稳步提高,很少有退步,一直到现在 通过阅读 Go 1.18 中完全单态化原始提案中风险部分,似乎选择用字典实现是由于单态化代码很慢...怎么会有人知道 Go 代码单态化很慢?以前从来没有人这样做过 事实上,从来没有任何 Go 代码可以被单态化。

21330

Go: 内置类型别名深入解析

但你可能会好奇,为何Go设计者不直接使用uint8,而要引入byte这样一个别名?...这对于支持多语言、处理复杂文本数据程序来说,是非常有价值。 any:编程前哨 go type any = interface{} any是interface{}别名,代表任意类型。...Go语言在1.18版本引入了编程特性之前,interface{}被广泛用于实现编程效果。而any引入,是Go语言在正式成为其特性之前一种过渡。...iota在Go语言中是一个非常独特存在,代表了在const声明中当前项索引值,从0开始。通过iota,我们可以方便地生成一系列常量值,无需手动赋值,大大提高了代码简洁性和可维护性。..._, char := range s { count[char]++ } return count } 数据结构 在Go1.18以前,interface{}(现在

9910

2022年3月15日 Go生态洞察:Go 1.18重大发布

2022年3月15日 Go生态洞察:Go 1.18重大发布 摘要 嗨,猫头虎博主来了! 今天,我们要聚焦Go语言一个历史性时刻——Go 1.18发布!...这个版本不仅引入了长期期待支持,还包含了集成到标准工具链中fuzzing功能,以及全新Go工作区模式。这确实是Go语言发展过程中一个巨大飞跃。让我们一起探索Go 1.18所有细节吧!...引言 经过长时间设计和开发,Go 1.18终于与我们见面了。作为Go语言迄今为止最重大更新,标志着Go一次重大飞跃,从到性能提升,这个版本有太多值得我们深入探讨内容。...正文 ️ (Generics) Go 1.18引入了对支持,这是Go社区长期以来最期待特性。允许开发者编写更灵活、更通用代码。你可以使用教程来更好地理解和利用这一新特性。...示例 让我们通过一个简单示例来理解这一特性: package main import "fmt" func Map[T any, U any](s []T, f func(T) U) []

8510

go1.18新特性(翻译)

这就需要更多的人使用范来编写go代码。我们相信这一功能设计严谨、质量很高。但是不像go其他方面的特性,我们不能保证大家实践体验和我们预期一样美好。...因此,虽然我们鼓励大家在特定场景下合理使用,但在生产环境中部署代码时还需要谨慎。 虽然我们相信这个新语言功能设计得很好,并且定义明确,但我们也可能犯了错误。...我们保留修复此类bug权利。”翻译成人话,使用代码在1.18版本运行正常,但在以后版本中可能会出bug,我们不计划做出此类变更。...=进行比较所有类型集合。只能用作(或嵌入)于类型约束。 有三个使用实验包可能很有用。...由于编译器中与支持相关更改,Go 1.18编译速度可能比Go 1.17编译速度慢大约15%。编译代码执行时间不受影响。我们打算提高Go 1.19中编译器速度。

1.4K10

12 年后,Go 终于默认支持

2019 年 7 月底,Go 团队发布了 Go 2 设计草稿 Contracts - Draft Design,这个设计草稿建议增加参数多态来扩展 Go 语言。...2020 年 6 月下旬,Go 团队发布了关于最新设计草案,此后一直在完善相关工作,并将注意力转移到生产就绪版本实现身上。...Go 团队称,“我们将在 2021 年年内继续努力,力争在年底前为大家带来一些可供试用成果,也许会以 Go 1.18 beta 形式发布。”...这是 Go 特性又一步历史性前进。根据 Go 官方消息,Go 1.18 中将正式启用。 为什么 Go 语言没有? 从诞生到现在,12 年 Go 为什么一直没有?...当前,虽然 Go 编译器已默认启用 -G=3,但 -G=0 模式仍在测试中。对于渴望支持开发者来说,一起期待明年 Go 1.18 吧。

25720

Go: 及其应用详解

在软件开发世界里,是一个强大工具,允许我们编写灵活且可重用代码。对于我们这些追求成为软件架构师和系统架构师开发者来说,深入理解并有效应用是提升我们代码设计能力关键一步。...Go语言自1.18版本起正式引入了功能,这一变化无疑给Go语言带来了更广阔应用前景。本文将深入探讨Go及其应用,希望能为我们学习和工作提供有价值参考。...Go语法 在Go语言中,引入是通过在函数、接口或类型定义时添加类型参数列表来实现。类型参数列表被放在一对方括号内,紧随函数名、接口名或类型名之后。...当我们看到any时,可以清楚地知道这部分代码是在使用Go 1.18引入特性,而不是简单地使用空接口来接受任意类型值。这种区分在读代码和维护代码时非常有帮助。...随着我们对Go更深入理解和应用,将会使我们在软件设计和开发道路上迈出坚实一步。对于我们这些致力于成为优秀软件架构师和系统架构师的人来说,掌握及其应用无疑是走向成功重要一环。

12110

Go语言11岁了,网友:他喵,终于确定出「」了

谷歌开发编程语言Go,迎来了11岁生日! 那么在这一年时间里,Go经历了怎样变化?接下来又该如何发展? 为此,Go语言官方网站专门发布了文章Eleven Years of Go。...月底,团队发布了「」(Go generics)最新设计草案,以及原型工具和「」实验语法playground。...关于Go generics: 每个人心中下一个功能特性当然是「」(generics)。 我们将在2021年中继续努力,希望在年底之前为人们提供一些试用目标。...或许,它会成为Go 1.18 beta中一部分。...对此,网友们似乎对「发布计划十分感兴趣,并表示: 也有网友对「」可能在1.18版本才会出现表示遗憾: 当然,也有对Go发展速度表示「挤牙膏」…… 那么,这样Go语言,你怎么看?

23320

Go 1.18局限性初探

前言 Go 1.18 版本之后正式引入,它被称作类型参数(type parameters),本文初步介绍 Go使用。...长期以来 go 都没有概念,只有接口 interface 偶尔类似的充当作用,然而接口终究无法满足一些基本需求,比如这篇文章里,我们会尝试用 Go 循序渐进地实现一些常见函数式特性...Go 1.18Go1.18 可以通过如下命令安装体验: go install golang.org/dl/go1.18@latest go1.18 download 例1: 版本求和函数 import...那我们要如何在函数不了解 MyInt 情况下把当 int 处理, 比较抱歉是目前在1.18中没办法对这个进行处理。...1.18 在引入 type paramters 语法之外并没有其他大刀阔斧改变,导致和这个语言其他部分显得有些格格不入,也使得能力受限。

65710

鹅厂 Go 首超 C++ 成最热门语言!没白转 Go!附 268 道面试真题及详解 +100 例代码实例

Go 最近动静挺大,刚刚发布 1.18 包含以下几大特性: 1、 2、模糊测试(Fuzzing) 3、工作空间(Workspaces) 4、20% 性能提升:Apple M1、ARM64 和 PowerPC64...由于 Go 1.17 寄存器 ABI 调用约定扩展到这些架构,Go 1.18 包括高达 20% CPU 性能改进。 没错,过往 Go 被诟病最多,现在终于支持了!!!...咱们国内 Go 环境也越来越好了,字节 Go 是第一语言早已成为不争事实。腾讯前不久公布报告,Go 语言快速增长,首次超越 C++,成为腾讯 2021 年最热门编程语言。...有的技术大佬是这样评价 Go ,“相当于 5-10 年 Java”,此时不上车,再想上车就晚了啊!...②其次,代码实例 68 页,代码撸得怎么样,功夫得下在平时。

52110

Go 浅析

Go 浅析 程序设计(generic programming)是程序设计语言一种风格或范式。...允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定类型,在实例化时作为参数指明这些类型。 各种程序设计语言和其编译器、运行环境对支持均不一样。...所以编程面向是具有某些共同特性一组类型,比起普通面向对象编程,是一种更高层次抽象。 Go语言 在Go1.17版已经支持尝鲜,Go1.18正式支持。我们为什么如此期待?...因为我们期待能够解决现阶段一些痛点。 本文中所有代码是在 Go1.18.5 上实验 目前有什么痛点?...资料 Type Parameters Proposal 【Golang】要来了吗? Go1.18是如何实现

44940

会让你 Go 代码运行变慢

这里,我们主要着眼于难题第三个方面:不想用系统工程师们该怎么办,特别是单态化给性能造成影响。这样工程师不少,这类人对性能表现都相当失望。...Go 1.18实现 我们其实可以用多种不同方式在编程语言中实现参数多态化(我们常称之为「」)。在切入正题前,我们先聊聊问题背景、明确 Go 1.18 已经采用解决方案。...根据设计文档中说法,对于任意两个具体类型,只要二者具有相同基础类型、或者皆属于指针类型时,就会被划分在同一 gcshape 分组内。...说了这么多,可能期待着能在 Go 1.18 中利用优化代码性能朋友们已经大失所望。确实很遗憾,至少在 1.18 实现中,大多数只会让代码运行速度变得更慢。...从 Go 1.18 说明文档中关于完全单态化风险来看,选择使用字典来实现理由,似乎是代码单态化速度很慢。但这又带来了新问题:真的吗?既然从来就没有过 Go 代码单态化方案,怎么判断很慢?

1K20

2022年11月10日 Go生态洞察:十三年Go之旅

搜索关键词:Go 1.18Go 1.19,,模糊测试,VS Code Go,供应链安全。让我们开始吧! 引言 在这篇文章中,我们将庆祝Go开源发布第十三个生日。Go语言,现已成为一名少年。...正文 Go 1.18亮点 工作区: Go 1.18引入了工作区概念,这对于同时处理多个模块尤为有用。...: Go最受期待特性之一,,为Go添加了参数多态性,使其能够处理不同类型数据。更多信息请查看“Getting started with generics”教程。...VS Code Go 和 Gopls 改进稳定性和性能: 今年,Gopls发布重点在于提高稳定性和性能,同时支持、新分析和代码透镜。...供应链安全 Go模块系统: 针对供应链安全,Go模块系统设计旨在帮助你理解和追踪依赖关系。

12510

会让你 Go 代码运行变慢

这里,我们主要着眼于难题第三个方面:不想用系统工程师们该怎么办,特别是单态化给性能造成影响。这样工程师不少,这类人对性能表现都相当失望。...Go 1.18实现 我们其实可以用多种不同方式在编程语言中实现参数多态化(我们常称之为「」)。在切入正题前,我们先聊聊问题背景、明确 Go 1.18 已经采用解决方案。...根据设计文档中说法,对于任意两个具体类型,只要二者具有相同基础类型、或者皆属于指针类型时,就会被划分在同一 gcshape 分组内。...说了这么多,可能期待着能在 Go 1.18 中利用优化代码性能朋友们已经大失所望。确实很遗憾,至少在 1.18 实现中,大多数只会让代码运行速度变得更慢。...从 Go 1.18 说明文档中关于完全单态化风险来看,选择使用字典来实现理由,似乎是代码单态化速度很慢。但这又带来了新问题:真的吗?既然从来就没有过 Go 代码单态化方案,怎么判断很慢?

1.2K40

2021年12月14日 Go生态洞察:Go 1.18 Beta 1 发布与引入

2021年12月14日 Go生态洞察:Go 1.18 Beta 1 发布与引入 摘要 大家好,猫头虎博主在此! 今天我们要聊聊Go语言最新动态:Go 1.18 Beta 1发布。...这不仅仅是一个普通更新,而是Go自版本1以来最显著变化——引入!这里,我们将深入探索世界,看看如何给Go带来革命性变化。让我们一起在Go海洋中潜水吧!...虽然正式版还需等待几个月,但这是Go 1.18首个预览版,让我们可以提前体验和反馈。 引入 Go自首个版本以来最重大变化。允许使用参数化类型编写代码,这在Go历史上是前所未有的。...多模块工作模式 此外,Go 1.18 Beta 1引入了新Go workspace mode”,允许同时处理多个Go模块,这对于大型项目而言尤为重要。 ️...Go 1.18 Beta 1发布无疑是Go社区一个重大里程碑,特别是引入。我期待看到如何改变我们编写Go代码方式。同时,其他新增功能也值得我们深入探索。

8210

2021年1月12日 Go生态洞察:探索Go提议

但一直以来,缺少了一个在现代编程语言中常见功能:。现在,Go社区提出了一个引入正式提议,这可能会是Go发展历程中一个重要转折点。...过去几年中,我们一直在进行一系列设计草案工作,最终形成了基于类型参数设计。这个设计草案得到了Go编程社区大量输入,许多人使用游乐场进行了实验,这在之前博客文章中有描述。...我们理解对于这样重大变更,不可能让Go社区中每个人都满意,但我们打算做出每个人都愿意接受决定。...如果提议被接受,我们目标是在年底前有一个完整、尽管可能不是完全优化实现,供人们尝试,可能作为Go 1.18 beta一部分。...总结知识要点 要点 说明 提议 提议增加类型参数支持,允许编程 必要性 能增强代码共享和编程灵活性 挑战 将整合到Go中是一个复杂任务 社区参与 设计草案得到社区广泛输入和实验

8010

Go和Java有什么差距?

Go1.18 最近随着Go 1.18版本发布了,也就是Go正式支持generic编程了,这个版本发布将会给你Go编程开发体验带来巨大变动,估计后面一些开源库也会陆续重构,对Go语言从发布至今应该是一次最大改动...图片我本人也是对Go编程也是很期待,在2020时候我在实现一些通用算法和数据结构时就遇到了一些重复代码逻辑问题,并且向官方询问过,当时官方给了我一些设计草案,后面这个草案一直在改动,直到现在终于发布了...,你Go语言版本需要升级到1.18这个语义化版本,如下图我已经升级到这个版本了。...图片跑起来这个型函数,可以正常运行,但是别急,我们写一个加法函数试试:图片这是为什么?...也就是以前我通过type xx int8这样代码,该如何限制

66630
领券