最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語法入門any類型的使用場(chǎng)景示例詳解

 更新時(shí)間:2023年09月06日 09:23:52   作者:海生  
這篇文章主要為大家介紹了go語法入門any類型的使用場(chǎng)景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、介紹

在沒有any類型之前,go語言中,我們經(jīng)常使用interface{},來表示一個(gè)類型是未知的,或者有好幾種其他基礎(chǔ)類型的情況。
從 Go1.18開始,go官方定義了一個(gè)預(yù)聲明標(biāo)識(shí)符(Predeclared identifiers):any。

// any is an alias for interface{} and is equivalent to interface{} in all ways.
// any 是一個(gè) interface{}的 別名,并且在任何情況下和interface{}相同。
type any = interface{}

官方的定義,告訴了我們any就是interface{}的別名,用來代替interface{}的。
go源碼中現(xiàn)在也大量的使用any比如:

func Print(a ...any) (n int, err error) 
func Println(a ...any) (n int, err error)
type Pointer[T any] struct
var expunged = new(any)
dirty map[any]*entry 
func Marshal(v any) ([]byte, error) 
......

太多地方用到了,基本上go官方,用any代替了任何interface{}出現(xiàn)的地方。

二、any的最佳實(shí)踐

2.1 在map的情況下,map更適合做key

我們先來看一個(gè)下面兩個(gè)時(shí)間,大家比較一下,哪一個(gè)比較好。

func TestAny(t *testing.T) {
    m1 := make(map[any]string, 0)
    m1["1"] = "1"
    m1[2] = "2"
    var v1 string = m1["1"]
    var v2 string = m1[2]
    t.Log(v1, v2)
    m2 := make(map[string]any, 0)
    m2["1"] = "1"
    m2["2"] = 2
    var v3 string = m2["1"].(string)
    var v4 int = m2["2"].(int)
    t.Log(v3, v4)
}

結(jié)論是 m1這種方式好。為什么,因?yàn)橛米鰇ey的話,這樣我們無論做為保存,還是讀取,都無需多做什么操作。
m2這種方式,我們需要拿到數(shù)據(jù)后,進(jìn)行類型的轉(zhuǎn)換。這一步還的和之前保存的一樣,就很復(fù)雜。

2.2 函數(shù)的參數(shù)和返回值,any更適合做參數(shù)

在官方的json解析包里面。無論是編碼還是解碼,any都只是作為參數(shù)。

func Marshal(v any) ([]byte, error)
func Unmarshal(data []byte, v any) error

如果是返回值的話,我們調(diào)用這個(gè)函數(shù),還得進(jìn)行返回值的類型轉(zhuǎn)換,這對(duì)于調(diào)用方,無疑是巨大負(fù)擔(dān)。

但作為參數(shù),對(duì)于調(diào)用方,是巨大的便利,他可以傳入各種類型。

以上就是go語法入門any類型的使用場(chǎng)景示例詳解的詳細(xì)內(nèi)容,更多關(guān)于go語法入門any類型使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:

相關(guān)文章

最新評(píng)論

莆田市| 澄江县| 平塘县| 文昌市| 大洼县| 荥经县| 霍山县| 自治县| 竹北市| 肇州县| 滕州市| 临夏市| 甘南县| 庄河市| 久治县| 江都市| 农安县| 城固县| 万盛区| 滕州市| 安阳县| 北宁市| 玉龙| 车致| 昭苏县| 习水县| 棋牌| 柳河县| 遂溪县| 保康县| 宁海县| 都匀市| 鹿泉市| 通州市| 永登县| 柳林县| 兴山县| 元阳县| 扬州市| 清流县| 淅川县|