欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言--切片(Slice)詳解

 更新時間:2021年10月08日 11:24:46   作者:歸子莫  
這篇文章主要介紹了Go語言--切片(Slice),Go 語言切片是對數(shù)組的抽象,下面文章小編將為大家詳細介紹該內容,需要的朋友可以參考下,希望對你有所幫助

說明:

Go 語言切片是對數(shù)組的抽象。

Go 數(shù)組的長度不可改變,在特定場景中這樣的集合就不太適用,Go中提供了一種靈活,功能強悍的內置類型切片("動態(tài)數(shù)組"),與數(shù)組相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

一、定義切片

注意:切片不需要說明長度

1、聲明一個未指定大小的數(shù)組來定義切片

var identifier []type
//例如
var slice []int

2、使用make()函數(shù)來創(chuàng)建切片

var slice1 []type = make([]type, len)
//也可以簡寫為
slice1 := make([]type, len)
//例如
slice := make([]type, len)

二、切片是可索引的

1、len() 和 cap() 函數(shù)

可以由 len() 方法獲取長度。

切片提供了計算容量的方法 cap() 可以測量切片最長可以達到多少

package main

import "fmt"

func main(){
    var number = make([]int,3,5)
    fmt.Printf("len=%d cap=%d         slice=%v\n",len(number),cap(number),number)
}

//len=3 cap=5 slice=[0 0 0]

2、空(nil)切片

一個切片在未初始化之前默認為 nil,長度為 0

package main

import "fmt"

func main(){
    var number []int
    fmt.Printf("len=%d cap=%d slice=%v\n",len(number),cap(number),number)
}

//len=0 cap=0 slice=[]

三、切片截取

可以通過設置下限及上限來設置截取切片 [lower-bound:upper-bound]

package main

import "fmt"

func main() {
    //創(chuàng)建切片
    number := []int{0, 1, 2, 3, 4, 5, 6, 7, 8}
    printSlice(number)

    //打印原始切片
    fmt.Println("number == ", number)

    //打印子切片從索引1到索引4
    fmt.Println("number == ", number[1:4])

    //打印子切片默認下限
    fmt.Println("number == ", number[:3])

    //打印子切片默認上限
    fmt.Println("number == ", number[4:])

}

func printSlice(x []int) {
    fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}

結果:

四、增加切片的容量

原理:創(chuàng)建一個新的更大的切片并把原分片的內容都拷貝過來

append() 和 copy() 函數(shù)
package main

import (
    "fmt"
)

func main() {
    //創(chuàng)建切片
    var number []int
    printSlice(number)

    //允許追加空切片
    number = append(number,0)
    printSlice(number)

    //向切片添加一個元素
    number = append(number,1)
    printSlice(number)

    //同時添加多個元素
    number = append(number,2,3,4)
    printSlice(number)

    //創(chuàng)建的新的切片是之前的切片容量的兩倍
    number1 := make([]int,len(number),(cap(number))*2)

    //拷貝number的內容到number1中
    copy(number1,number)
    printSlice(number1)
}

func printSlice(x []int) {
    fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}

到此這篇關于Go語言--切片(Slice)詳解的文章就介紹到這了,更多相關Go語言切片(Slice)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • golang并發(fā)編程使用Select語句的實現(xiàn)

    golang并發(fā)編程使用Select語句的實現(xiàn)

    Go語言中的select語句是并發(fā)編程中的重要工具,允許Goroutine等待多個通道操作,它阻塞直至任一case可執(zhí)行,可用于接收數(shù)據(jù)、實現(xiàn)超時機制和非阻塞通道操作,感興趣的可以了解一下
    2024-10-10
  • 實時通信的服務器推送機制 EventSource(SSE) 簡介附go實現(xiàn)示例代碼

    實時通信的服務器推送機制 EventSource(SSE) 簡介附go實現(xiàn)示例代碼

    EventSource是一種非常有用的 API,適用于許多實時應用場景,它提供了一種簡單而可靠的方式來建立服務器推送連接,并實現(xiàn)實時更新和通知,這篇文章主要介紹了實時通信的服務器推送機制 EventSource(SSE)簡介附go實現(xiàn)示例,需要的朋友可以參考下
    2024-03-03
  • 關于go-zero服務自動收集問題分析

    關于go-zero服務自動收集問題分析

    這篇文章主要介紹了關于go-zero服務自動收集問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Go語言開發(fā)快速學習CGO編程

    Go語言開發(fā)快速學習CGO編程

    這篇文章主要為大家介紹了Go語言開發(fā)之快速學習CGO編程,看了本文你就會發(fā)現(xiàn)CGO編程其實沒有想象的那么難,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Go語言日志內聚復用及gjson踩坑記錄分享

    Go語言日志內聚復用及gjson踩坑記錄分享

    這篇文章主要為大家介紹了Go語言日志內聚復用及gjson踩坑記錄分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Go如何實現(xiàn)Websocket服務以及代理

    Go如何實現(xiàn)Websocket服務以及代理

    這篇文章主要介紹了Go如何實現(xiàn)Websocket服務以及代理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 深入Golang的接口interface

    深入Golang的接口interface

    這篇文章主要介紹了深入Golang的接口interface,go不要求類型顯示地聲明實現(xiàn)了哪個接口,只要實現(xiàn)了相關的方法即可,編譯器就能檢測到,接下來關于接口interface的相關介紹需要的朋友可以參考下面文章內容
    2022-06-06
  • Go標準庫http?server的優(yōu)雅關閉深入理解

    Go標準庫http?server的優(yōu)雅關閉深入理解

    這篇文章主要為大家介紹了Go標準庫http?server的優(yōu)雅有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪關閉深入理解
    2024-01-01
  • 淺析goland等待鎖問題

    淺析goland等待鎖問題

    這篇文章主要介紹了goland等待鎖問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-11-11
  • 淺析Go語言版本的forgery

    淺析Go語言版本的forgery

    使用過Python語言的朋友們可能使用過 forgery_py ,它是一個偽造數(shù)據(jù)的工具。這篇文章主要介紹了Go語言版本的forgery,需要的朋友可以參考下
    2018-08-08

最新評論