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

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

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

說(shuō)明:

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

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

一、定義切片

注意:切片不需要說(shuō)明長(zhǎng)度

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

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

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

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

二、切片是可索引的

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

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

切片提供了計(jì)算容量的方法 cap() 可以測(cè)量切片最長(zhǎng)可以達(dá)到多少

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)切片

一個(gè)切片在未初始化之前默認(rèn)為 nil,長(zhǎng)度為 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=[]

三、切片截取

可以通過(guò)設(shè)置下限及上限來(lái)設(shè)置截取切片 [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])

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

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

}

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

結(jié)果:

四、增加切片的容量

原理:創(chuàng)建一個(gè)新的更大的切片并把原分片的內(nèi)容都拷貝過(guò)來(lái)

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

import (
    "fmt"
)

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

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

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

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

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

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

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

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

相關(guān)文章

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

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

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

    實(shí)時(shí)通信的服務(wù)器推送機(jī)制 EventSource(SSE) 簡(jiǎn)介附go實(shí)現(xiàn)示例代碼

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

    關(guān)于go-zero服務(wù)自動(dòng)收集問(wèn)題分析

    這篇文章主要介紹了關(guān)于go-zero服務(wù)自動(dòng)收集問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Go語(yǔ)言開(kāi)發(fā)快速學(xué)習(xí)CGO編程

    Go語(yǔ)言開(kāi)發(fā)快速學(xué)習(xí)CGO編程

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

    Go語(yǔ)言日志內(nèi)聚復(fù)用及gjson踩坑記錄分享

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

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

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

    深入Golang的接口interface

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

    Go標(biāo)準(zhǔn)庫(kù)http?server的優(yōu)雅關(guān)閉深入理解

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

    淺析goland等待鎖問(wèn)題

    這篇文章主要介紹了goland等待鎖問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-11-11
  • 淺析Go語(yǔ)言版本的forgery

    淺析Go語(yǔ)言版本的forgery

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

最新評(píng)論