<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # **切片基本操作** 使用下面的代碼可創建一個切片字面量: ```go aSliceLiteral := []int{1, 2, 3, 4, 5} ``` 與定義數組相比,**切片字面量**只是沒有指定元素數量。如果你在[]中填入數字,你將得到的是數組。 也可以使用*make()*創建一個空切片,并指定切片的長度和容量。容量這個參數可以省略,在這種情況下容量等于長度。 下面定義一個長度和容量均為20的空切片,并且在其需要的時候會自動擴容: ```go integer := make([]int, 20) ``` Go自動將空切片的元素初始化為對應元素的初始值,意味著切片初始化時的值是由切片類型決定的。 使用下面的代碼遍歷切片中的元素: ```go for i :=0; i < len(integer); i++ { fmt.Println(i) } ``` 切片變量的零值是nil, 下面代碼可將已有的切片置為空: ```go aSliceLiteral = nil ``` 可以使用**append()**函數追加元素到切片,此操作將觸發切片自動擴容。 ```go integer = append(integer, 12345) ``` `integer[0]`代表切片integer的第一個元素,`integer[len(integer)-1]`代表最后一個元素。 同時,使用`[:]`操作可以獲取連續多個元素,下面的代碼表示獲取第2、3個元素: ```go integer[1:3] ``` `[:]`操作也可以幫助你從現有的切片或數組中創建新的切片或數組: ```go s2 := integer[1:3] ``` 這種操作叫做re-slicing,在某種情況下可能會導致bug: ```go package main import "fmt" func main() { ? s1 := make([]int, 5) ? reSlice := s1[1:3] ? fmt.Println(s1) ? fmt.Println(reSlice) ? reSlice[0] = -100 ? reSlice[1] = 123456 ? fmt.Println(s1) ? fmt.Println(reSlice) } ``` 我們使用`[:]`操作獲取第2、3個元素。 > Tip: 假設有一個數組a1,你可以執行`s1 := a1[:]` 來創建一個引用a1的切片 將上述代碼保存為`reslice.go`并執行,將得到以下輸出; ```bash $ go run reslice.go [0 0 0 0 0] [0 0] [0 -100 123456 0 0 ] [-100 123456] ``` 可以看到切片s1的輸出是[0 -100 123456 0 0 ],但是我們并沒有直接改變s1。這說明通過re-slicing操作得到的切片,與原切片指向同一片內存地址! re-slicing操作的第二個問題是,只要較小的重新切片存在,來自原始切片的底層數組就會被保存在內存中,因為較小的重新切片引用了原始切片, 盡管你可能是想通過使用re-slicing從原切片中得到較小的一個切片,這對于小切片來說并不是什么嚴重問題,但是在這種情況下就可能導致bug:你將大文件的內容讀到切片中,但是你只是想使用其中一小部分。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看