GO 1.20 新功能:多重错误包装 天天新资讯

2022-12-28 08:01:11

预计将于 2023 年 2 月发布的 Go 1.20 有一个小的变化,对于那些大量使用错误包装的应用程序来说,可能会有效改进它们的错误处理方法。

让我们看一下它的用法,但首先,需要简要回顾一下什么是错误包装。如果你已经掌握了可以直接跳到下面的 “Go 1.20 新功能” 部分以获取新的信息。

Go 中的错误是实现一个非常简单的接口:


(资料图片仅供参考)

typeerrorinterface{Error()string}

错误类型可以是任何东西,从string本身到int,但通常它们是struct类型。下面这个例子来自标准库:

typeerrstruct{sstring}func(e*err)Error()string{returne.s}

要检查 Go 中的错误,你只需比较一个值(在本例中为int值):

iferr==io.EOF{//...}

第二种常见的用法是检查错误的类型,那也意味着要写更多的代码:

ifnerr,ok:=err.(net.Error){//...(usenerrwhichisanet.Error)}

在上面的例子中,类型断言测试类型net.Error的err值,并创建一个新变量nerr,它可以在 if 语句中使用。Go 中的错误方便理解、易于使用且非常高效。

错误包装

从 Go 1.13 开始,引入了错误包装。包装允许将错误嵌入到其他错误中,就像在其他语言中包装异常一样。这非常实用,比如函数遇到 “record not found” 错误时,可以向错误信息中添加更多上下文信息,例如 “unknown user: record not found”。

Go 中错误包装设计背后的有趣想法是:契约不用关心错误类型、结构或它们是如何创建的。而唯一关注的是解包过程和转换为字符串,因为这两者是必须的。这就非常容易实现:支持解包的错误类型必须实现Unwrap() error方法。

标准库中没有(命名的)接口可以向您展示,因为接口是隐式实现的,没有必要单独写一个。这里我们写一个只是为了更好说明这篇文章:

typeWrappedErrorinterface{Unwrap()error}

我们来看看 Go 标准库(实际上是 package fmt)中是如何实现包装错误的:

typewrapErrorstruct{msgstringerrerror}func(e*wrapError)Error()string{returne.msg}func(e*wrapError)Unwrap()error{returne.err}

由于上面错误类型实现了Error() string方法,所以说 Go 中的错误实际上最终是字符串并没有错,因此需要一种创建这些字符串的良好机制。这就是标准库中的函数fmt.Errorf发挥作用的地方:

varRecordNotFoundErr=errors.New("notfound")constname,id="lzap",13werr:=fmt.Errorf("unknownuser%q(id%d):%w",name,id,recordNotFoundErr)fmt.Println(werr.Error())

一个特殊格式的动词%w,每次调用只能使用一次(稍后会详细介绍),用于错误参数。除此之外,该函数的工作方式类似于fmt.Printf函数。下面的例子打印了这个结果:

unknownuser"lzap"(id13):notfound

如你所见,错误包装本质上是一个链表。要解包错误,请使用errors.Unwrap函数,该函数将为链表中的最后一个错误值返回nil。要检查错误类型或值,需要遍历整个列表,这对于需要进行频繁的错误检查不太实用。幸运的是,有两个辅助函数可以做到这一点。

检查包装错误列表中的值:

iferrors.Is(err,RecordNotFoundErr){//...}

检查特定类型(下面例子是来自标准库的网络错误):

varnerr*net.Erroriferrors.As(err,&nerr){//...(usenerrwhichisa*net.Error)}

以上总结了 Go 1.13 及更高版本中的错误包装。

Go 1.20 新特性

让我们看看 Go 1.20 中真正的新功能,从函数errors.Join开始,它通过可变参数包装错误列表:

err1:=errors.New("err1")err2:=errors.New("err2")err:=errors.Join(err1,err2)fmt.Println(err)

当事先不知道错误数量时,此功能可用于将错误连接在一起。一个很好的例子是从 goroutines 收集错误。值得一提的是,该函数将列表中的错误与换行符连接起来。上面的代码片段打印:

err1err2

对于许多应用程序或(日志记录)库来说,这可能会存在问题,它们期望错误通常只是没有换行符的字符串。幸运的是,Go 1.20 中的另一个变化改变了fmt.Errorf的行为:该函数现在接受多个%w格式说明符:

err1:=errors.New("err1")err2:=errors.New("err2")err:=fmt.Errorf("%w+%w",err1,err2)fmt.Println(err)

以前会导致格式错误的格式字符串现在可以正确打印:

err1+err2

同时包装多个错误实现Unwrap() error,这是可能的吗?

事实证明,在 Go 1.20 标准库中有一种新的机制: 实现Unwrap() []error函数的错误类型可以包装多个错误。让我们来看看这是如何在库中实现的:

typejoinErrorstruct{errs[]error}func(e*joinError)Error()string{//concatenateerrorswithanewlinecharacter}func(e*joinError)Unwrap()[]error{returne.errs}

一个理论上的接口,但标准库中实际不存在,如下所示:

typeMultiWrappedErrorinterface{Unwrap()[]error}

由于 Go 不允许方法重载,因此每种类型都可以实现Unwrap() error或Unwrap() []error,但不能同时实现。还记得我提到过包装错误本质上是一个链表吗?实现前一个(新引入的)方法的类型实际上形成了一个链接树,函数errors.Is和errors.As的工作方式相同,只是现在它们需要遍历树而不是列表。根据文档,该实现执行预排序、深度优先遍历。

这确实是 Go 1.20 带来的全部,它可能看起来是一个小的变化,但它提供了如何有效和干净地处理错误的新方法。在展示真实示例之前,让我总结一下新功能:

新的Unwrap []error函数契约允许遍历错误树。

新的errors.Join函数,这是一个方便的函数,用于连接两个错误字符串值(使用换行符)。

现有函数errors.Is和errors.As已更新,可以同时处理错误列表和错误树。

现有函数fmt.Errorf现在接受多个%w格式动词。实践

上面这一切都很棒,但是你如何在实践中利用它呢?

在一个小型 REST API 微服务中,我们通过errors.New和fmt.Errorf处理来自 DAO 包(数据库)、REST 客户端(其他后端服务)和其他包的各种错误。返回的 HTTP 状态代码应该是 2xx、4xx 或 5xx,具体取决于错误状态以遵循最佳 REST API 实践。实现此过程的一种方法是解开主 HTTP 处理程序中的错误并找出它是哪种错误。

然而,通过多重错误包装,现在可以包装根本原因(例如数据库返回 “no records found” )和返回给用户 HTTP 代码(在本例中为 404)。

一个工作示例如下所示:

packagemainimport("errors""fmt")//commonHTTPstatuscodesvarNotFoundHTTPCode=errors.New("404")varUnauthorizedHTTPCode=errors.New("401")//databaseerrorsvarRecordNotFoundErr=errors.New("DB:recordnotfound")varAffectedRecordsMismatchErr=errors.New("DB:affectedrecordsmismatch")//HTTPclienterrorsvarResourceNotFoundErr=errors.New("HTTPclient:resourcenotfound")varResourceUnauthorizedErr=errors.New("HTTPclient:unauthorized")//applicationerrors(thenewfeature)varUserNotFoundErr=fmt.Errorf("usernotfound:%w(%w)",RecordNotFoundErr,NotFoundHTTPCode)varOtherResourceUnauthorizedErr=fmt.Errorf("unauthorizedcall:%w(%w)",ResourceUnauthorizedErr,UnauthorizedHTTPCode)funchandleError(errerror){iferrors.Is(err,NotFoundHTTPCode){fmt.Println("Willreturn404")}elseiferrors.Is(err,UnauthorizedHTTPCode){fmt.Println("Willreturn401")}else{fmt.Println("Willreturn500")}fmt.Println(err.Error())}funcmain(){handleError(UserNotFoundErr)handleError(OtherResourceUnauthorizedErr)}

这将打印:

Willreturn404usernotfound:DB:recordnotfound(404)Willreturn401unauthorizedtocallotherservice:HTTPclient:unauthorized(401)

从这样的人工代码片段中可能看起来不太明显的是,实际上的错误声明通常分布在许多包中,并且不容易跟踪所有可能的错误以确保所需的 HTTP 状态代码。在这种方法中,所有在一个地方声明的应用程序级包装错误也包含了 HTTP 代码。

请注意,这在 Go 1.19 或更早版本中是不可能的,因为fmt.Errorf函数只会包装第一个错误。该代码确实在 1.19 上可以编译,甚至不会产生运行时恐慌,但它实际上不会工作。

显然,常见的 HTTP 状态代码很容易成为一种新的错误类型(基于int类型),因此可以通过errors.As轻松提取实际代码,但我想让示例保持简单。

Feel free to play around with the code on Go Playground. Make sure to use “dev branch” or 1.20+ version of Go. 可以在 Go Playground 上自由运行上述代码。确保使用 “dev branch” 或 Go 的 1.20+ 版本。现有应用

在你的应用程序中实施新功能时,请注意errors.Unwrap函数。对于具有Unwrap() []error的错误类型,它总是返回nil:

err1:=errors.New("err1")err2:=errors.New("err2")err:=errors.Join(err1,err2)unwrapped:=errors.Unwrap(err)fmt.Println(unwrapped)

由于 Go 1.X 兼容性承诺,这会打印出 “nil”。当你引入多个包装错误时,请确保检查展开代码。幸运的是,典型 Go 代码中的大部分错误检查都是使用errors.Is和errors.As完成的。

错误包装并不是 Go 中所有错误处理的最终解决方案。它只是提供了一种干净的方法来处理典型 Go 应用程序中的错误,对于简单应用程序来说也许就完全足够了。原文地址:https://lukas.zapletalovi.com/posts/2022/wrapping-multiple-errors/原文作者:Lukáš Zapletal本文永久链接:https://github.com/gocn/translator/blob/master/2022/w50_Wrapping_multiple_errors译者:haoheipi

校对:watermelo

往期推荐

谷歌发布查找开源漏洞的Go工具OSV-Scanner

最好的Go框架:没有框架?

「每周译Go」如何在Go中构造For 循环

想要了解Go更多内容,欢迎扫描下方关注公众号,回复关键词 [实战群],就有机会进群和我们进行交流

分享、在看与点赞Go

标签:

上一篇 :

下一篇 :

GO 1.20 新功能:多重错误包装 天天新资讯

预计将于2023年2月发布的Go1 20有一个小的变化,对于那些大量使用错误包装的应用程序来说,可能会有效...

12-28 08:01:11

合肥邮政储蓄银行支持帮其他人预约2023贺岁纪念币吗? 天天看点

合肥邮政储蓄银行支持帮其他人预约2023贺岁纪念币吗?答:合肥邮政储蓄银行支持帮其他人预约2023贺岁纪...

12-27 20:23:01

微速讯:普利制药(300630.SZ):盐酸多巴酚丁胺注射液获美FDA批准通知

格隆汇12月27日丨普利制药公布,公司于近日收到了美国食品药品监督管理局(简称“FDA”)签发的盐酸多巴酚...

12-27 16:31:10

家居板块持续拉升 券商指板块估值仍处历史底部配置价值凸显

格隆汇12月27日丨家居板块持续拉升,顾家家居(603816)、双枪科技涨超5%,志邦家居(603801)涨4 5%、欧派...

12-27 11:39:08

国家卫健委:摸清65岁及以上老年人合并相关基础疾病和疫苗接种情况,提供分类分级健康服务|环球消息

12月26日,国家卫健委微信公众号发布《关于对新型冠状病毒感染实施“乙类乙管”的总体方案》解读问答。...

12-27 06:51:55

【天天聚看点】敷睡眠面膜前后的正确步骤?

1 首先进行最基本的清洁皮肤,然后按照平时的习惯,抹上水,精华,乳液,面霜。睡眠面膜是不建议裸敷的...

12-26 18:03:11

小米米家首款智能鱼缸上架:支持远程投食 众筹349元

12月26日消息,今天小米米家商城上架了一款智能鱼缸,这是小米米家首款智能鱼缸。该智能鱼缸支持米家App...

12-26 13:05:37

甘肃保障群众用药需求

“车间从今年7月份开始提速生产,设备全部投入运行,我们实行‘三班倒’,确保设备24小时不停机。”甘肃...

12-26 07:26:33

环球即时看!融e贷网贷逾期10个月多久上征信

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

12-25 14:43:04

顶替醉酒驾驶会被吊销驾驶证吗?|观点

一、顶替的人不会吊销驾驶证,但涉及行政管理会罚款或行政拘留,涉及刑事犯罪会予以刑事处罚。二、这里...

12-24 16:31:29

全球时讯:如何购买黄金现货?有哪些投资方法?

随着市场不稳定因素的增加,尽管美联储依然持续加息态度,但金价却迎来反扑,再次突破1800大关。对于具...

12-23 23:26:49

当ChatGPT遇上弱智吧… 全球新消息

没想到,无敌如弱智吧,也有被ChaGPT“反将一军”的时候。提问AI“咱们来玩个马吃草的扮演游戏吧,我草...

12-23 15:50:08

广发e秒贷借款逾期多久上征信

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

12-23 10:14:53

世界要闻:浙江遂昌:开展涉疫产品质量和市场秩序执法检查

)近日,浙江省丽水市遂昌县市场监管局扎实推进涉疫产品质量和市场秩序专项检查工作,截至目前,检查各...

12-23 00:21:28

大盘高开低走为哪般?|环球快看点

在外围股市继续走好的情况下,今日沪深两市大盘均出现了较大幅的高开,开盘后大盘一度震荡冲高,上证综...

12-22 15:50:23

天天短讯!中汽协:1-11月销量排名前十位的轿车生产企业共销售637.8万辆

证券时报网讯,据中国汽车工业协会统计分析,1-11月,销量排名前十位的轿车生产企业共销售637 8万辆,...

12-22 10:16:32

锡南科技发明专利数行业垫底 撑起超六亿采购额供应商缺乏能力

《金证研》北方资本中心春山 作者庭初 风控家族企业作为市场上具有普遍意义的企业组织形态,在国内,...

12-21 21:01:36

*ST蓝盾(300297)12月21日主力资金净买入293.01万元

截至2022年12月21日收盘,*ST蓝盾(300297)报收于1 48元,上涨4 23%,换手率4 04%,成交量50 44万手,成交额7130 59万元。1

12-21 15:20:52

焦点简讯:雄韬股份(002733)12月20日主力资金净买入7977.70万元

截至2022年12月20日收盘,雄韬股份(002733)报收于17 35元,上涨10 02%,涨停,换手率5 51%,成交量20...

12-21 09:05:15

【全球新视野】煮热红酒用什么红酒比较好

关于煮热红酒用什么红酒比较好的内容,包含热红酒用干红还是甜红什么样的红酒适合做成热红酒热红酒用什么...

12-20 20:23:54

Polkadot 能否达到与 L2 解决方案相当的出块时间?| W3F 12 月 AMA

加入PolkaWorld社区,共建Web3 0!Web3基金会技术教育和Grant负责人Bill在Reddit上举办了2022年最后一

12-20 13:01:12

天天即时:新易贷微贷款贷款逾期6年延迟还款会上征信系统吗

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

12-20 07:12:22

每日热议!苹果终于上架!有了这个音乐工具,免费听遍全网歌曲

好在贴心的小雷,费尽心思总算为苹果用户找来了一个超实用的音乐工具,免费即可听遍各种音乐资源,一起...

12-19 18:09:55

*ST雪发:针对公司被出具保留意见的事项,公司正积极采取各种措施解决

(原标题:*ST雪发:针对公司被出具保留意见的事项,公司正积极采取各种措施解决)同花顺(300033)金融...

12-19 13:24:07

连花清瘟可造成肝衰竭?上市公司正面回应!航空运输市场恢复方案出台,板块复苏势头获机构看好,北上资金已潜伏 天天观热点

数据是个宝。国内航空运输市场分阶段恢复具体引导时间表出炉。有分析称,此次民航局制定国内航空运输市...

12-19 07:25:20

北京石景山:金顶街街道党员志愿者服务好邻里街坊

北京日报客户端|记者吴镝通讯员杨国栋连日来,在部分药品、生活资源不充足的情况下,石景山区金顶街街道...

12-18 20:55:52

借呗逾期六个月多久上征信

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

12-17 23:55:07

2022年12月16日全国各地最新玉米价格行情走势分析 全球热议

中商情报网讯:2022年12月15日全国玉米价格有所上涨,从地区上看有涨有跌。12月15日全国玉米均价为2872...

12-17 08:35:30

东方财富: 东方财富信息股份有限公司关于董事会换届选举的提示性公告

证券代码:300059       证券简称:东方财富     公告编号:2022-104          ...

12-16 19:20:13

世界快资讯:HYGIEIA GROUP(01650.HK)将于11月3日派发2021年度末期股息每股0.00075新加坡元

HYGIEIAGROUP(01650 HK)发布公告,该公司将于2022年11月3日派发截至2021年12月31日止年度末期股息每股0 00075新加坡元。截

12-16 12:54:08

飞鹤60年:向下扎根,向阳而生-世界快看点

广袤的东北平原上,有一望无际的农垦场。创建于1947年的赵光农场,位于小兴安岭南麓,乌裕尔河畔,是中...

12-16 05:31:42

环球热点!中熔电气(301031):间接持股董事股份减持计划时间过半的进展

2022年12月15日公告发布

12-15 18:02:37

举重世锦赛:中国选手梁小梅收获两金一铜

图片来源:TEAMCHINA官方微博中新网12月15日电北京时间15日凌晨,2022年举重世锦赛,结束了女子81公斤级...

12-15 12:25:45

中原农村贷款怎么样 「通许县」 环球快报

临走前,他让我买理财保险。中原银行不同于农村信用社。没过多久钱就打到卡上了。贷款到银行,用房子做...

12-15 05:26:56

宝钢股份: 宝钢股份2022年第五次临时股东大会会议资料

宝山钢铁股份有限公司      会议资料 二 O 二二年十二月二十八日 上海宝山钢铁股份有限公司 ...

12-14 15:59:44

【全球播资讯】生猪市场价格回调“旺季不旺” 业内人士称看好元旦、春节行情

本报记者李正“这两天生猪市场价格回调并未对公司生猪养殖业务的经营造成太大影响。”天康生物负责人向...

12-14 10:34:29

蓝帆医疗: 第五届监事会第二十五次会议决议公告

证券代码:002382            证券简称:蓝帆医疗         公告编号:2022-092债...

12-13 21:33:36

当前短讯!日照城投集团拟发行合20亿元中期票据 期限均为5年

12月13日,日照城投集团有限公司发布2022年度第一期中期票据、2022年度第二期中期票据募集说明书。观点...

12-13 14:05:11

热议:中孚实业荣登2022河南民营企业100强榜单

近日,河南省工商联发布了2022河南民营企业100强系列榜单,中孚实业位列“2022河南民营企业100强”第25...

12-13 07:21:15

武汉第四批次集中供地:6宗涉宅用地底价成交 地方国企托底

武汉第四批次集中供地:6宗涉宅用地底价成交地方国企托底2022年11月29日20:36澎湃新闻

12-12 16:24:50

焦点热文:首批公募REITs扩募项目状态已更新 估值等成交易所“最关注”

”明明认为,随着公募REITs新发和扩募逐步常态化,对于实操过程中出现的项目合规、国资转让等问题,也需...

12-12 13:05:36

通讯!重庆路桥: 重庆路桥股份有限公司关于召开2022年第三次临时股东大会的通知

证券代码:600106       证券简称:重庆路桥             公告编号:2022-050  ...

12-09 17:16:52

云中马: 浙江云中马股份有限公司提名委员会工作规则

第一章    总则     浙江云中马股份有限公司(以下简称“公司”)为规范董事及高级管理人员的...

12-08 16:58:28

嘉益股份:公司目前暂未涉及保温杯业务 热闻

(原标题:嘉益股份:公司目前暂未涉及保温杯业务)同花顺(300033)金融研究中心12月7日讯,有投资者向...

12-07 14:57:21

新东方在线(01797.HK)早盘涨超6%,截至发稿,涨4.03%,报43.9港元,成交额4.05亿港元

新东方在线(01797 HK)早盘涨超6%,截至发稿,涨4 03%,报43 9港元,成交额4 05亿港元。截至2022年12...

12-06 10:58:45

广元市昭化区:多措并举助企纾困解难稳就业

如何统筹好疫情防控和经济社会发展,争取今年经济发展达到较好水平?今年以来,广元市昭化区紧紧围绕稳岗...

07-07 09:36:36

种竹子还是金丝楠 什么样的林子可以称为“碳中和林”?

林场员工在巡视林木生长情况。今年,各地在义务植树节期间,纷纷打出碳中和林概念。那么,什么样的林子...

03-18 12:41:59

用植物的成长过程 诉说环境保护真谛

春季是万象更新的季节,更是播种的季节。3月14日, 在金陵汇文小学的操场上,五(2)班的同学们正开展着...

03-18 12:41:59

一名本土确诊病例系厦门大学教职工 校方已排查93人均阴性

  中新网11月26日电 据厦门大学微信公众号消息,11月25日18:00,上海市召开新冠肺炎疫情防控新闻发布...

11-26 14:15:17

江西本轮疫情新冠肺炎住院确诊病例“清零”

  (抗击新冠肺炎) 江西本轮疫情新冠肺炎住院确诊病例“清零”  中新网南昌11月26日电 (记者 吴鹏...

11-26 14:15:17

合肥邮政储蓄银行支持帮其他人预约2023贺岁纪念币吗? 天天看点
微速讯:普利制药(300630.SZ):盐酸多巴酚丁胺注射液获美FDA批准通知
家居板块持续拉升 券商指板块估值仍处历史底部配置价值凸显
国家卫健委:摸清65岁及以上老年人合并相关基础疾病和疫苗接种情况,提供分类分级健康服务|环球消息
【天天聚看点】敷睡眠面膜前后的正确步骤?
小米米家首款智能鱼缸上架:支持远程投食 众筹349元
甘肃保障群众用药需求
环球即时看!融e贷网贷逾期10个月多久上征信
顶替醉酒驾驶会被吊销驾驶证吗?|观点
全球时讯:如何购买黄金现货?有哪些投资方法?
当ChatGPT遇上弱智吧… 全球新消息
广发e秒贷借款逾期多久上征信
世界要闻:浙江遂昌:开展涉疫产品质量和市场秩序执法检查
大盘高开低走为哪般?|环球快看点
天天短讯!中汽协:1-11月销量排名前十位的轿车生产企业共销售637.8万辆
锡南科技发明专利数行业垫底 撑起超六亿采购额供应商缺乏能力
*ST蓝盾(300297)12月21日主力资金净买入293.01万元
焦点简讯:雄韬股份(002733)12月20日主力资金净买入7977.70万元
【全球新视野】煮热红酒用什么红酒比较好
Polkadot 能否达到与 L2 解决方案相当的出块时间?| W3F 12 月 AMA
天天即时:新易贷微贷款贷款逾期6年延迟还款会上征信系统吗
每日热议!苹果终于上架!有了这个音乐工具,免费听遍全网歌曲
*ST雪发:针对公司被出具保留意见的事项,公司正积极采取各种措施解决
连花清瘟可造成肝衰竭?上市公司正面回应!航空运输市场恢复方案出台,板块复苏势头获机构看好,北上资金已潜伏 天天观热点
北京石景山:金顶街街道党员志愿者服务好邻里街坊
借呗逾期六个月多久上征信
2022年12月16日全国各地最新玉米价格行情走势分析 全球热议
东方财富: 东方财富信息股份有限公司关于董事会换届选举的提示性公告
世界快资讯:HYGIEIA GROUP(01650.HK)将于11月3日派发2021年度末期股息每股0.00075新加坡元
飞鹤60年:向下扎根,向阳而生-世界快看点
环球热点!中熔电气(301031):间接持股董事股份减持计划时间过半的进展
举重世锦赛:中国选手梁小梅收获两金一铜
中原农村贷款怎么样 「通许县」 环球快报
宝钢股份: 宝钢股份2022年第五次临时股东大会会议资料
【全球播资讯】生猪市场价格回调“旺季不旺” 业内人士称看好元旦、春节行情
蓝帆医疗: 第五届监事会第二十五次会议决议公告
当前短讯!日照城投集团拟发行合20亿元中期票据 期限均为5年
热议:中孚实业荣登2022河南民营企业100强榜单
武汉第四批次集中供地:6宗涉宅用地底价成交 地方国企托底
焦点热文:首批公募REITs扩募项目状态已更新 估值等成交易所“最关注”
通讯!重庆路桥: 重庆路桥股份有限公司关于召开2022年第三次临时股东大会的通知
云中马: 浙江云中马股份有限公司提名委员会工作规则
嘉益股份:公司目前暂未涉及保温杯业务 热闻
新东方在线(01797.HK)早盘涨超6%,截至发稿,涨4.03%,报43.9港元,成交额4.05亿港元
广元市昭化区:多措并举助企纾困解难稳就业
种竹子还是金丝楠 什么样的林子可以称为“碳中和林”?
用植物的成长过程 诉说环境保护真谛
一名本土确诊病例系厦门大学教职工 校方已排查93人均阴性
江西本轮疫情新冠肺炎住院确诊病例“清零”
江苏徐州:封控区隔离人员1304人核酸检测均为阴性
X 广告
行业动态
X 广告

Copyright ©  2015-2022 北方植物网版权所有  备案号:京ICP备2021034106号-50   联系邮箱: 55 16 53 8@qq.com