slice

package main

import (
    "fmt"
    "unsafe"
)

type Slice struct {
    ptr unsafe.Pointer
    len int
    cap int
}

func printSlice(name string, s []int) {
    myS := (*Slice)(unsafe.Pointer(&s))
    fmt.Printf("name:%+v\n", myS)
}

func main() {
    s1 := make([]int, 6)
    fmt.Printf("s1=%+v len=%d cap=%d\n", s1, len(s1), cap(s1))
    printSlice("s1", s1)

    s2 := s1[2:3]
    printSlice("s2", s2)
    
    s3 := s1[3:6:15]
    printSlice("s3", s3)

    fmt.Println("vim-go")
}

s3:=s1[2:3:4] s3的ptr指向s1底層array的2號(hào)位置,長度為3-2=1,cap的結(jié)尾指向s1底層array的4號(hào)位置,即cap=4-2=2

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文只是關(guān)注于 slice 的表示方式,它們可以創(chuàng)建兩種類型的值: 截?cái)嗟膕tring 指向array或者slic...
    QFdongdong閱讀 637評(píng)論 0 0
  • Go 語言中,slice表示一個(gè)擁有相同類型元素的可變長度序列。slice通常被寫為[]T,其中元素的類型都是T;...
    副班長國偉閱讀 1,683評(píng)論 0 1
  • package main import "fmt" //slice本身是沒有數(shù)據(jù),是對(duì)底層array的一個(gè)view...
    無風(fēng)起個(gè)浪閱讀 203評(píng)論 0 0
  • 其本身并不是數(shù)組,它指向底層的數(shù)組作為變長數(shù)組的替代方案,可以關(guān)聯(lián)底層數(shù)組的局部或全部為引用類型可以直接創(chuàng)建或從底...
    haokeed閱讀 272評(píng)論 0 0
  • 這部分: 有時(shí)候可能需要使用一些比較tricky的技巧,比如利用make弄一塊內(nèi)存自己管理,或者用cgo之類的方式...
    HuJay閱讀 676評(píng)論 0 0

友情鏈接更多精彩內(nèi)容