自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Go1.20.4 新版本發(fā)布,修復(fù)了一個(gè)神奇的內(nèi)聯(lián) BUG!

開發(fā) 前端
周末我在看 Go1.20.4 的發(fā)布里程碑記錄時(shí),發(fā)現(xiàn)了一個(gè)比較有意思的 BUG,持續(xù)了很久,一直沒人發(fā)現(xiàn)。直至今日才被修復(fù)。

大家好,我是煎魚。

最近 Go 在勞動(dòng)節(jié)期間,Go 發(fā)布了小版本的版本更新,主要是 Go1.20.4 和 Go1.19.9:

圖片

周末我在看 Go1.20.4 的發(fā)布里程碑記錄時(shí),發(fā)現(xiàn)了一個(gè)比較有意思的 BUG,持續(xù)了很久,一直沒人發(fā)現(xiàn)。直至今日才被修復(fù)。

我們快速來看一下。

演示代碼如下:

package main

func foo() {
 println("foo")
}

func main() {
 fn := foo
 for _, fn = range list {
  fn()
 }
}

var list = []func(){
 func() {
  println("1")
 },
 func() {
  println("2")
 },
 func() {
  println("3")
 },
}

請問運(yùn)行的結(jié)果是什么?

我掐指一算,是如下結(jié)果:

1
2
3

對嗎?

不不不,其實(shí)運(yùn)行結(jié)果是:

foo
foo
foo

這 “誤會” 可大了。為什么呢?可以通過分析看到 Go 程序內(nèi)部的處理過程:

go run -gcflags='-m=1' a.go
# command-line-arguments
./a.go:3:6: can inline foo
./a.go:7:6: can inline main
./a.go:10:5: inlining call to foo
./a.go:15:2: can inline glob..func1
./a.go:18:2: can inline glob..func2
./a.go:21:2: can inline glob..func3

本質(zhì)上就是內(nèi)聯(lián)函數(shù)的結(jié)果是錯(cuò)誤的,與我們所編寫的 Go 程序的預(yù)期不一致,出現(xiàn)隱藏的 BUG(要是踩坑了,估計(jì)要排查很久,會先懷疑是不是自己寫出了 BUG...)。

這個(gè)問題在 Go1.15 起就產(chǎn)生了,硬生生的埋伏了近 3 年就被人發(fā)現(xiàn)。將會在最新發(fā)布的 Go1.20.4、Go1.19.9 中修復(fù)。

該兩個(gè)版本的其余更新的話,更多偏向安全修復(fù)方面:

圖片

例如:html/template 標(biāo)準(zhǔn)庫的 CSS 值的不正確清理、JavaScript 空格處理不當(dāng)、對空 HTML 屬性的不當(dāng)處理等。

有興趣的同學(xué)可以及時(shí)查看 Go1.20.4 Milestone[1] 和更新 Go 版本進(jìn)行處理。

參考資料

[1]Go1.20.4 Milestone: golang/go/milestone/305?closed=1

責(zé)任編輯:武曉燕 來源: 腦子進(jìn)煎魚了
相關(guān)推薦

2014-12-17 09:40:22

dockerLinuxPaaS

2022-05-16 08:42:26

Pandasbug

2015-06-17 09:17:52

2021-10-19 22:19:53

Windows 11Windows微軟

2009-04-17 09:30:18

MySQL5.1.34下載

2009-03-12 08:57:23

GoogleChrome瀏覽器

2014-04-17 11:24:44

GoogleAndroid

2023-05-05 06:19:30

版本Windows 11企業(yè)版

2009-12-29 13:43:21

Ubuntu 9.10

2010-06-01 09:52:27

jQuery Tool

2021-08-09 10:36:50

Windows 11Windows微軟

2020-09-08 15:24:11

iOS 14提醒事項(xiàng)功能

2016-09-28 14:00:56

2013-12-04 16:19:39

2010-04-13 09:38:19

Office Mac

2009-05-15 17:29:19

微軟托管服務(wù)引擎MSE

2015-12-02 10:52:17

無線滲透無線安全Xiaopan OS

2022-02-08 15:47:44

TensorFlow功能新版

2010-01-05 14:45:08

FileZilla 3修復(fù)bug

2013-10-11 15:53:25

LinuxLinuxMintCinnamon
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號