首页 > 其他分享 >Go1.22 for range新特性

Go1.22 for range新特性

时间:2024-03-16 22:04:35浏览次数:21  
标签:value 特性 range Go1.22 0xc00000a0d8 Go World Hello

Go1.22 在for range 方面做了一些调整,主要分为两方面

1.不再共享循环变量

在 Go1.22 之前的版本 for range 生成的对象是单一的,如下代码:

func main() {
	values := []int{1, 2, 3, 4, 5}
	for _, value := range values {
		go func() {
			fmt.Printf("%p,%d\n", &value, value)
		}()
	}
	time.Sleep(time.Second * 3)
}

Go 1.21.6 执行结果:

0xc00000a0d8,4
0xc00000a0d8,5
0xc00000a0d8,5
0xc00000a0d8,3
0xc00000a0d8,5

而在 Go 1.22.0中执行结果如下:

0xc00000a0f0,2
0xc00000a108,5
0xc00000a100,4
0xc00000a0d8,1
0xc00000a0f8,3

2. 支持循环整形类型

在 Go 1.22.0 中支持下方语法:

func main() {
	for i := range 5 {
		fmt.Println("Hello World!", i)
	}
}

执行结果:

Hello World! 0
Hello World! 1
Hello World! 2
Hello World! 3
Hello World! 4

而在 Go 1.21.6 的版本中执行会报错

# command-line-arguments
.\main.go:18:17: cannot range over 5 (untyped int constant)

Compilation finished with exit code 1

标签:value,特性,range,Go1.22,0xc00000a0d8,Go,World,Hello
From: https://blog.csdn.net/Wksycxy/article/details/136770738

相关文章

  • Python疑难杂症(13)---Python的几个比较难理解的内置函数,包括range、zip、map、lambda
    1、range()range(start=0, stop[, step=1])构造器的参数必须为整数(可以是内置的 int 或任何实现了 __index__() 特殊方法的对象)。生成一个start到stop的数组,左闭右开, 类型表示不可变的数字序列,通常用于在 for 循环中循环指定的次数。list(range(6))[0,1,2,3......
  • EcmaScript6全新语法特性-----EcmaScript6
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title><......
  • Java从8到21的语言新特性
    try-with-resource可以使用既有的变量//java9之前try(InputStreamis=Files.newInputStream(Paths.get("1111"))){//dosomething}//java9之后可以这样了InputStreamis=Files.newInputStream(Paths.get("1111"));try(is){//dosomething......
  • jdk1.8新特性——lamdba表达式
    如果方法有返回值且方法体中只有return这一行代码,return可省略,如果不写,必须随同花括号一起省略publicclassTest01{publicstaticvoidmain(String[]args)throwsExecutionException,InterruptedException{TestInterfacetestInterface=(a,b)->a+b;......
  • P2824 [HEOI2016/TJOI2016] 排序 与 ABC297_g Range Sort Query 题解
    洛谷题目链接:排序abc题目链接:Atcoder或者洛谷两道差不多的题拿出来说说。本题有双\(\log\)做法,也有单\(\log\)做法,都讲讲。双\(\log\)做法对于第一个题而言,询问最终\(pos\)位置上的数为多少,那么这个问题是否具有单调性?这个是很有意思的点,我们考虑只关注某个数\(x\)......
  • 【Python】拉格朗日Lagrange插值与牛顿Newton插值求解
    实验原理熟悉并掌握Lagrange插值的构造原理;会计算在给定点的函数值Lagrange插值是一种基于Lagrange基函数的插值方法。给定一组数据节点(x,y),其中x是自变量,y是因变量,其插值的目标是构造一个多项式函数,通过这个多项式函数来拟合已知的数据节点,并用于对其他未知点进行插值预......
  • SMK20-12255保护测控装置电源板:功能特性与广泛应用解析
    SMK20-12255保护测控装置电源板:功能特性与应用解析SMK20-12255保护测控装置电源板是一种专用于电力系统的高性能电源供应与监测控制设备。它以其稳定可靠的电源供应、精准实时的电力参数监测以及快速响应的保护机制,为电力系统的安全稳定运行提供了重要保障。一、功能特性高......
  • 突破编程_C++_C++11新特性(模板的改进与细节)
    1模板右尖括号的改进在C++11之前,模板的解析和实例化过程中,右尖括号>的处理有时会导致一些意外的结果,特别是在嵌套模板或模板模板参数中。这是因为C++编译器通常会试图“查看前方”来确定何时结束模板参数的列表,这有时会导致解析错误。C++11对模板的右尖括号处理进......
  • CANape 22.0新特性:小改进大作用,为汽车测试工程带来更多便利!
    大家好!在前文中,我们已经了解了CANape22.0版本的主要新特性,现在,我们将进一步探索CANape22.0新增的一系列小而美的新特性。尽管这些特性可能不如前文提到的主要更新那样惊艳,但它们同样是CANape22.0版本的亮点所在,这些微小改进将为广大汽车测试工程师们带来更多便利并提升工作效率......
  • 开源.NET 全能 Cron 表达式解析库(支持 Cron 所有特性)
    前言今天大姚给大家分享一个.NET全能Cron表达式解析类库,支持Cron所有特性:TimeCrontab。Cron表达式介绍Cron表达式是一种用于配置定时任务的时间表达式。它由一系列字段组成,每个字段代表任务在不同时间维度的调度规则。Cron表达式常用于各种系统中,如操作系统的定时任务、......