永久免费网站搭建wordpress 留言 seo no

张小明 2026/1/19 22:00:57
永久免费网站搭建,wordpress 留言 seo no,淘宝网首页登录网页版,html首页制作大家好#xff0c;我是煎鱼。今天给大家分享一个 Go1.26 即将带来的实用新特性—— new(expr) 表达式支持。相信写过 Go 的同学都有过这样的经历#xff1a;创建一个结构体指针很简单#xff0c;但要创建一个基本类型的指针就得多写好几行代码。还是挺烦人的。这个特性能解决…大家好我是煎鱼。今天给大家分享一个 Go1.26 即将带来的实用新特性——new(expr)表达式支持。相信写过 Go 的同学都有过这样的经历创建一个结构体指针很简单但要创建一个基本类型的指针就得多写好几行代码。还是挺烦人的。这个特性能解决日常开发中的小痛点。背景在 Go 中如果我们想创建一个指向结构体的指针可以这样写type Person struct { name string } p : Person{name: alice}非常简洁优雅。但如果我们想创建一个指向基本类型值的指针呢就得这么写n : 42 p : n或者用new函数p : new(int) *p 42看起来就很不协调对吧为什么创建复合类型的指针可以一步到位而基本类型就得多写一个临时变量或者两行代码这个问题其实在社区里讨论了很久。早在 2014 年的 issue #9097[1]就有人提出过但当时被驳回了。为什么不能直接写 3可能有同学会问为什么不直接支持p : 3这种写法呢问题就出在类型系统上。在 Go 中数字字面量3是一个无类型常量(untyped constant)它本身没有确定的类型。只有在赋值或者运算时编译器才会根据上下文推断出具体类型。如果允许3这种写法编译器就不知道该分配什么类型的内存空间 —— 是int、int64还是float64这会带来类型歧义所以这条路走不通。新提案扩展 new 函数Go 团队最终采纳的方案是让new函数不仅可以接受类型参数还可以接受表达式参数。快速例子p1 : new(int, 3) p2 : new(rune, 10) p3 : new(Weekday, Tuesday) p4 : new(Name, unspecified) ... and so on语法规则新的new函数行为如下如果参数expr是一个类型为 T 的表达式或者是一个默认类型为 T 的无类型常量表达式那么new(expr)会分配一个类型为 T 的变量将其初始化为expr的值并返回其地址(类型为*T)如果参数是类型 T那么new(T)会分配一个初始化为零值的 T 类型变量(这是原有行为)简单来说就是new现在既能接受类型也能接受值了。代码示例基本类型指针以前我们得这么写// Go 1.25 n : 42 p1 : n fmt.Println(*p1) // 42 s : go p2 : s fmt.Println(*p2) // go现在可以直接// Go 1.26 p1 : new(42) fmt.Println(*p1) // 42 p2 : new(go) fmt.Println(*p2) // go复合类型指针对于切片这类复合类型也同样适用// Go 1.25 s : []int{11, 12, 13} p1 : s fmt.Println(*p1) // [11 12 13] type Person struct{ name string } p2 : Person{name: alice} fmt.Println(*p2) // {alice}新写法// Go 1.26 p1 : new([]int{11, 12, 13}) fmt.Println(*p1) // [11 12 13] type Person struct{ name string } p2 : new(Person{name: alice}) fmt.Println(*p2) // {alice}函数返回值指针这个场景以前特别麻烦// Go 1.25 f : func() string { return go } v : f() p : v fmt.Println(*p) // go现在一行搞定// Go 1.26 f : func() string { return go } p : new(f()) fmt.Println(*p) // go需要注意的是传入nil仍然是不允许的p : new(nil) // 编译错误实现原理其实这个特性的实现思路很简单。当你写p : new(42)编译器会将其转换为类似这样的操作var _tmp 42 p : _tmp或者等价于p : new(int) *p 42也就是说new(expr)本质上是为非可寻址的表达式显式分配存储空间然后返回其地址。这样就统一了创建指针的方式不管是基本类型还是复合类型都可以用类似的语法。社区讨论中的另一个方案其实在 proposal 讨论过程中Rob Pike 还提出了另一个有趣的方案让类型转换变得可寻址。比如可以这样写p1 : int(3) p2 : rune(10) p3 : string(hello)这个方案的逻辑是类型转换必然会创建新的存储空间(因为要改变类型)所以让它可寻址是合理的。不过最终 Go 团队选择了扩展new的方案可能是考虑到new函数的语义本身就是分配并初始化扩展它更自然。避免引入新的语法歧义。保持运算符语义的一致性。实际应用场景这个特性虽然看起来简单但在实际开发中还是挺有用的。比如1. 配置选项很多第三方库的配置结构体中会有指针类型的字段用来区分未设置和设置为零值type Config struct { Timeout *int MaxRetry *int } // Go 1.25 timeout : 30 config : Config{ Timeout: timeout, MaxRetry: new(int), // 只能用 new(int) 表示 0 } // Go 1.26 config : Config{ Timeout: new(30), MaxRetry: new(0), }2. 测试代码在单元测试中构造测试数据时这个特性能让代码更简洁testCases : []struct { input *int expected string }{ {new(42), success}, {new(0), zero}, {nil, nil}, }3. 内联指针创建在函数调用时需要传指针参数// Go 1.25 func process(val *string) {} s : data process(s) // Go 1.26 process(new(data))总结new(expr)这个特性解决了 Go 中创建基本类型指针时的不便让代码更简洁一致。虽然改动不大但确实提升了开发体验。这个特性将会在 Go1.26 版本正式发布由 Alan Donovan、Ian Lance Taylor、Rob Pike 等核心团队成员推动完成。对于我们 Go 开发者来说以后写代码可以少定义临时变量了代码也会相对干净些。花了 11 年啊。绝了真的服了。参考资料[1]#9097:https://github.com/golang/go/issues/9097关注和加煎鱼微信一手消息和知识拉你进技术交流群你好我是煎鱼出版过 Go 畅销书《Go 语言编程之旅》再到获得 GOPGo 领域最有观点专家荣誉点击蓝字查看我的出书之路。日常分享高质量文章输出 Go 面试、工作经验、架构设计加微信拉读者交流群和大家交流原创不易 点赞支持
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

北京工程建设交易中心网站空间登录

以下是一个 完整的 MATLAB 实现:基于黏菌优化算法(Slime Mould Algorithm, SMA)的无人机三维路径规划 项目。该方法利用 SMA 这一新型元启发式优化算法,在复杂三维环境中搜索从起点到终点的 安全、平滑且较短的飞行路径。 ✅ 特点: 支持三维障碍物(球体/立方体) 路径由一…

张小明 2025/12/26 16:25:30 网站建设

西安给大学做网站公司wordpress文章截断

一、 LLM-As-a-Judge 的原理 01是什么 LLM-as-a-Judge(大语言模型作为评判者)是指利用大型语言模型(LLM)来评估、判断或批判其他AI系统的输出,代替传统的人类评审者的评判方式。 02主要特征 外部评估。LLM-as-a-Ju…

张小明 2025/12/26 16:25:26 网站建设

网站中的二维码设计企业定制网站建设公司哪家好

FaceFusion能否用于艺术创作?数字肖像画新范式 在当代艺术与技术交汇的前沿,一个有趣的问题正在浮现:当AI不仅能识别人脸,还能“重写”人脸时,它是否也能成为艺术家手中的画笔?这不是关于替代人类创造力的担…

张小明 2025/12/26 16:25:23 网站建设

怎么知道网站开发语言积分购物型网站

💡实话实说:CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。摘要 随着互联网技术的快速发…

张小明 2026/1/16 5:31:27 网站建设

建设工业网站微信网页版客户端

nas-tools媒体库管理:零基础打造智能影视中心 🎬 【免费下载链接】nas-tools NAS媒体库管理工具 项目地址: https://gitcode.com/GitHub_Trending/na/nas-tools 还在为散落各处的电影、电视剧整理发愁吗?nas-tools作为一款强大的NAS媒…

张小明 2026/1/14 9:38:56 网站建设

如何注册属于自己的网站网站建设流程的过程

印度劳动力对奢侈化妆品的炫耀性消费实证分析 1. 引言 在当今社会,奢侈品消费呈现出上升趋势。Thorstein Veblen 指出,消费奢侈品是为了在社会中展现个人财富。随着印度经济的发展,中产阶级可支配收入增加,互联网购物机会增多,奢侈品消费也随之增长。 品牌在全球化背景下…

张小明 2025/12/30 11:36:17 网站建设