Go1.18 泛型約束語(yǔ)法變了,可通過(guò)新 playground 驗(yàn)證
Go1.18 功能已經(jīng)完全確認(rèn),代碼已經(jīng)凍結(jié),目前還有 100+ issue 要處理。

今天發(fā)現(xiàn),泛型中約束語(yǔ)法又變了,前段時(shí)間還是這樣的:
type?Addable?interface?{
?type?int,?int8,?int16,?int32,?int64,?uint,?uint8,?uint16,?uint32,?uint64,?uintptr,?float32,?float64,?complex64,?complex128,?string
}
現(xiàn)在改為這樣了:
type?Addable?interface?{
?int?|?int8?|?int16?|?int32?|?int64?|?uint?|?uint8?|?uint16?|?uint32?|?uint64?|?uintptr?|?float32?|?float64?|?complex64?|?complex128?|?string
}
所以這是最終的方案。
為了方便大家試驗(yàn) tip 版本,Go 官方終于做了一件事,那就是新開一個(gè) playground 支持 tip 版本。這樣大家可以不用下載 tip 版本就可以試用 tip 的相關(guān)功能,這就是 https://gotipplay.golang.org/,請(qǐng)自行解決訪問問題。
忍不住趕緊試用了一下:
package?main
import?(
?"fmt"
?"runtime"
)
type?Addable?interface?{
?int?|?int8?|?int16?|?int32?|?int64?|?uint?|?uint8?|?uint16?|?uint32?|?uint64?|?uintptr?|?float32?|?float64?|?complex64?|?complex128?|?string
}
func?Add[T?Addable](a,?b?T)?T?{
?return?a?+?b
}
func?main()?{
?fmt.Println(runtime.Version())
?fmt.Println(Add(1,?2))
?fmt.Println(Add(2.1,?3.2))
?fmt.Println(Add("程序員",?"幽鬼"))
}
https://gotipplay.golang.org/p/vtXyZInsmRk
輸出:
devel?go1.18-8c73f80400?Thu?Nov?11?15:34:02?2021?+0000
3
5.300000000000001
程序員幽鬼
后續(xù)大家試驗(yàn) tip 新功能可以通過(guò)它來(lái)進(jìn)行,方便快捷。
福利
送《云原生安全:攻防實(shí)踐與體系構(gòu)建》圖書 5 本,安全感興趣的值得一讀。

贈(zèng)送規(guī)則:從留言點(diǎn)贊數(shù)前 10 中選出?5 位送出,優(yōu)先送給本號(hào)忠實(shí)粉絲。解釋權(quán)歸「Go語(yǔ)言中文網(wǎng)」所有。開獎(jiǎng)時(shí)間:11月16日晚22點(diǎn)。
也可以直接購(gòu)買:
推薦閱讀
評(píng)論
圖片
表情
