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

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

切片切片參考

切片切片參考

Go
智慧大石 2023-04-04 14:14:23
我正在參觀 Golang 網(wǎng)站,我正在嘗試消化其中一個示例。目前還不清楚它是如何工作的:package mainimport "fmt"func main() {    s := []int{2, 3, 5, 7, 11, 13}    printSlice(s)    // Slice the slice to give it zero length.    s = s[:0]    printSlice(s)    // Extend its length.    s = s[:4]    printSlice(s)    // Drop its first two values.    s = s[2:]    printSlice(s)}func printSlice(s []int) {    fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)}輸出是:len=6 cap=6 [2 3 5 7 11 13]len=0 cap=6 []len=4 cap=6 [2 3 5 7]len=2 cap=4 [5 7]在第一個切片之后,s = s[:0]切片長度為0。然后是另一個切片s = s[:4]。雖然長度為 0,但這似乎有效。但是這是怎么發(fā)生的呢?底層數(shù)組不應(yīng)該可以從訪問嗎s?更讓我困惑的是,下一次切片時,s = s[2:]我們切片的是 s 的舊值(有 4 個元素),而不是原始數(shù)組。有人可以闡明這兩種情況有什么區(qū)別嗎?
查看完整描述

2 回答

?
慕村9548890

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

切片基本上是一個指向內(nèi)存的指針,帶有一些附加信息:


1)當(dāng)前使用的元素數(shù)量和


2)容量,即它能占用的剩余長度。


一開始我們創(chuàng)建了一個包含 6 個整數(shù)的切片,這使得 go 也創(chuàng)建了總大小為 6 的底層 int 數(shù)組。


here is your memory locations with addresses (content does not matter here)

 *  *  *  *  *  *

[0][1][2][3][4][5]

 ^

 s points to the start of the memory

len(s) = 6

cap(s) = 6

接下來我們說:讓這個slice'slen為0,這就是在位置0s = s[:0]處取一個長度為0的子切片。s注意s[0:0]是一樣的,你可以省略第一個0。


[0][1][2][3][4][5]

 ^

 s still points to the start of the memory

len(s) = 0

cap(s) = 6

由于容量仍然相同,我們不妨將長度設(shè)為 4 s = s[:4]。


 *  *  *  *

[0][1][2][3][4][5]

 ^

 s still points to the start of the memory

len(s) = 4

cap(s) = 6

然后我們通過做一個不在內(nèi)存開頭的子切片s = s[2:]。


       *  *

[0][1][2][3][4][5]

       ^

       s now points to the original address plus two!

len(s) = 2

cap(s) = 4


查看完整回答
反對 回復(fù) 2023-04-04
?
函數(shù)式編程

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

這是幫助我更好地理解這個概念的片段:

切片是數(shù)組段的描述符。它由指向數(shù)組的指針、段的長度及其容量(段的最大長度)組成。

切片不能超出其容量。嘗試這樣做會導(dǎo)致運行時恐慌,就像索引超出切片或數(shù)組邊界時一樣。同樣,不能將切片重新切片到零以下以訪問數(shù)組中較早的元素。

如果數(shù)組中有更多元素,則可以擴展切片,但它不能訪問切片 0 以下的元素。它是底層數(shù)組的窗口

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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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