第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果某物不在地圖中,返回值取什么值?

如果某物不在地圖中,返回值取什么值?

Go
慕慕森 2023-05-04 16:43:31
好的,根據(jù)這個:如何檢查地圖是否包含 go 中的鍵?if val, ok := m["foo"]; ok {    //do something here}很好,但是為什么我們不能這樣做:val, ok := m["foo"]if val == nil {   // cannot compare val to nil}我收到一個編譯錯誤,說我無法將 val 與 nil 進行比較,但是 val 有什么價值呢?我可以將它與什么進行比較,以確定它是否存在?m 的類型如下:type m map[string]struct{}
查看完整描述

2 回答

?
幕布斯6054654

TA貢獻1876條經(jīng)驗 獲得超7個贊

Go 編程語言規(guī)范

索引表達式

對于映射類型 M 的 a:如果映射為 nil 或不包含這樣的條目,則 a[x] 是 M 的元素類型的零值。

零值

當(dāng)通過聲明或調(diào)用 new 為變量分配存儲空間時,或者通過復(fù)合文字或調(diào)用 make 創(chuàng)建新值時,并且沒有提供顯式初始化,則給出變量或值一個默認值。此類變量或值的每個元素都設(shè)置為其類型的零值:布爾值為 false,數(shù)字類型為 0,字符串為 "",指針、函數(shù)、接口、切片、通道和映射為 nil。


Go 編程語言規(guī)范

復(fù)合文字

復(fù)合文字為結(jié)構(gòu)體、數(shù)組、切片和映射構(gòu)造值,并在每次計算它們時創(chuàng)建一個新值。它們由文字類型和后跟大括號綁定的元素列表組成。每個元素前面可以有一個相應(yīng)的鍵。對于結(jié)構(gòu)文字,以下規(guī)則適用:

文字可以省略元素列表;這樣的文字對其類型求值為零值。

對于您的示例,鍵入struct{},省略復(fù)合文字中的元素列表,struct{}{},作為零值。

例如,

package main


import "fmt"


func main() {

? ? m := map[string]struct{}{}

? ? val, ok := m["foo"]

? ? fmt.Printf("%T %v\n", val, val)

? ? if val == struct{}{} {

? ? ? ? fmt.Println("==", val, ok)

? ? }

}

輸出:

struct?{}?{}
==?{}?false

Go 編程語言規(guī)范

變量聲明

變量聲明創(chuàng)建一個或多個變量,將相應(yīng)的標(biāo)識符綁定到它們,并為每個變量賦予一個類型和一個初始值。

如果給出了一個表達式列表,則變量將使用遵循賦值規(guī)則的表達式進行初始化。否則,每個變量都被初始化為其零值。

如果存在類型,則每個變量都被賦予該類型。否則,每個變量在賦值中被賦予相應(yīng)初始化值的類型。

在您的示例中,您可以聲明一個沒有初始值的類型變量struct{},該變量將被初始化為該struct{}類型的零值。

例如,

package main


import "fmt"


func main() {

? ? m := map[string]struct{}{}

? ? val, ok := m["foo"]

? ? fmt.Printf("%T %v\n", val, val)

? ? var zeroValue struct{}

? ? if val == zeroValue {

? ? ? ? fmt.Println("==", val, ok)

? ? }

}

輸出:


struct {} {}

== {} false


查看完整回答
反對 回復(fù) 2023-05-04
?
開心每一天1111

TA貢獻1836條經(jīng)驗 獲得超13個贊

你當(dāng)然可以做你上面所做的。與 nil 進行比較取決于您在 map 中的值類型。如果是,interface{}你可以將它與 nil 進行比較:


m := map[string]interface{}{}


val, _ := m["foo"]


if val == nil {

    fmt.Println("no index")

}


查看完整回答
反對 回復(fù) 2023-05-04
  • 2 回答
  • 0 關(guān)注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號