日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ map初始化_Go学习每日一问(18)-map元素查找

發(fā)布時間:2025/3/8 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ map初始化_Go学习每日一问(18)-map元素查找 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

每次學(xué)習(xí)并整理一個Golang的知識點,每天進步一點點。今天學(xué)習(xí)下go中的一個知識點:map元素查找

日省吾身

1.下面代碼中 A B 兩處應(yīng)該怎么修改才能順利編譯?

func main() { var m map[string]int //A m["a"] = 1 if v := m["b"]; v != nil { //B fmt.Println(v) }}

2.寫出下面代碼片段的輸出結(jié)果?

func main() {s := [3]string{"a", "b", "c"}s1 := s[:0]s2 := s[:2]s3 := s[1:2:cap(s)]fmt.Println("s1:", len(s1), cap(s1))fmt.Println("s2:", len(s2), cap(s2))fmt.Println("s3:", len(s3), cap(s3))}

思考后看下方答案…


答疑解惑

參考答案:

1. 原程序編譯報錯,改進后的程序示例如下:

func main() { // var m map[string]int //A m := make(map[string]int) //A改進 m["a"] = 1 // if v := m["b"]; v != nil { //B if v, ok := m["b"]; ok { //B改進 fmt.Println(v) }

知識點:map

  • 在 A 處,只進行了map的聲明,沒有分配內(nèi)存空間,即沒有初始化,當(dāng)前 m 是一個 nil map,不能直接賦值;go中推薦使用內(nèi)置函數(shù)make()或字面量的方式進行map的初始化;
  • 在 B 處,從map中查找一個特定的值,推薦使用改進后的寫法; 判斷是否找到了特定的值,不需要檢查取到的值是否為nil,只需查看第二個返回值ok;它是一個bool型,返回true表示找到了對應(yīng)的數(shù)據(jù);配合 := 操作符,減少代碼冗余,看起來清晰易懂;

2. 程序的輸出結(jié)果為:

s1: 0 3s2: 2 3s3: 1 2

知識點: 切片的創(chuàng)建

  • 基于數(shù)組切片,可以使用操作符創(chuàng)建新的切片,形如s[n:l:c],n是偏移的起始位置,l是偏移的長度結(jié)束,c是偏移的容量結(jié)束位置;l-n 就是新切片的長度, c-n 就是新切片的容量;如果n省略,默認(rèn)為0
  • 有意思的是,n、l和c并不是當(dāng)前切片的索引,所以l是可以超出當(dāng)前切片的長度的,但不能超出當(dāng)前切片的容量;比如假設(shè)oldSlice只有5個元素,但容量是10;newSlice卻可以基于oldSlice的前7個元素創(chuàng)建,newSlice中超出oldSlice的部分都會填上0;

以上,你做對了嗎?

其他相關(guān)答案或補充知識點,歡迎在評論區(qū)留言補充!

下期提問

  • 判斷下面代碼片段的輸出結(jié)果?
  • func incrementA() int {var n intdefer func() {n++}()return n}func incrementB() (m int) {defer func() {m++}()return m}func main() {fmt.Println(incrementA())fmt.Println(incrementB())}
    • A. 0 0
    • B. 0 1
    • C. 1 0
    • D. 1 1

    答案及解析將在下期文章中給出,歡迎大家在評論區(qū)寫出你的答案;獨樂樂不如眾樂樂,歡迎交流學(xué)習(xí),互相進步


    歡迎轉(zhuǎn)發(fā)和評論。更多優(yōu)質(zhì)原創(chuàng)文章,歡迎關(guān)注微信公眾號“IYue愛月”。

    總結(jié)

    以上是生活随笔為你收集整理的c++ map初始化_Go学习每日一问(18)-map元素查找的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。