GoLang底层|GoLang之切片底层系列二(浅显学习)


文章目录

  • GoLang之切片底层系列二(浅显学习)
    • 1.slice介绍
    • 2.slice的定义
    • 3.slice切割共享问题
      • 3.1问题如下
      • 3.2解决方案
      • 3.3注意点
    • 4.对切片使用&
    • 5.对切片使用*
    • 6.对切片使用%p
    • 7.对切片元素使用&
    • 8.指针切片
    • 9.切片指针
【GoLang底层|GoLang之切片底层系列二(浅显学习)】
GoLang之切片底层系列二(浅显学习) 注:本文以Windos系统上Go SDK 1.18进行讲解
1.slice介绍 GoLang底层|GoLang之切片底层系列二(浅显学习)
文章图片

GoLang底层|GoLang之切片底层系列二(浅显学习)
文章图片

2.slice的定义 3.slice切割共享问题 3.1问题如下
GoLang底层|GoLang之切片底层系列二(浅显学习)
文章图片

3.2解决方案
GoLang底层|GoLang之切片底层系列二(浅显学习)
文章图片

3.3注意点
GoLang底层|GoLang之切片底层系列二(浅显学习)
文章图片

4.对切片使用&
func main() { var a = []int{1, 4} fmt.Println(&a)//&[1 4] fm5t.Printf("%p", a) //0xc0000160b0 }

5.对切片使用*
func main() { var a = []int{1, 4} var p *[]int p = &a fmt.Println(*p) //输出:[1 4] }

6.对切片使用%p
func main() { a := []int{1, 2, 3} fmt.Printf("%p\n", &a) //0xc000096060 }

7.对切片元素使用&
func main() { a := []int8{1, 2, 3} fmt.Printf("%p\n", &a) fmt.Println(&a[0]) fmt.Println(&a[1]) fmt.Println(&a[2]) b := []int16{1, 2, 3} fmt.Printf("%p\n", &b) fmt.Println(&b[0]) fmt.Println(&b[1]) fmt.Println(&b[2]) /* 0xc000004078 0xc000016098 0xc000016099 0xc00001609a0xc000004090 0xc0000160d0 0xc0000160d2 0xc0000160d4 */ }

func main() { a := []int8{1, 2, 3} fmt.Printf("%p\n", a) fmt.Println(&a[0]) fmt.Println(&a[1]) fmt.Println(&a[2]) b := []int16{1, 2, 3} fmt.Printf("%p\n", b) fmt.Println(&b[0]) fmt.Println(&b[1]) fmt.Println(&b[2]) /* 0xc000102058 0xc000102058 0xc000102059 0xc00010205a0xc000102090 0xc000102090 0xc000102092 0xc000102094 */ }

8.指针切片
func main() { var a = []int{1, 4} p := make([]*int, 3) p[0] = &a[0] fmt.Println(*p[0]) //输出:1 }

GoLang底层|GoLang之切片底层系列二(浅显学习)
文章图片

9.切片指针
func main() { var stack *[]int fmt.Println(stack) //输出: if stack == nil { fmt.Println("yes") //输出:yse } else { fmt.Println("no") } }

GoLang底层|GoLang之切片底层系列二(浅显学习)
文章图片

func main() { var a = []int{1, 4} var p *[]int p = &a fmt.Println((*p)[1])//输出:4 }

GoLang底层|GoLang之切片底层系列二(浅显学习)
文章图片

但是数组可以使用
func main() { var a = [3]int{1, 4} var p *[3]int p = &a fmt.Println(p[1]) //输出:4 }

func main() { var a = [3]int{1, 4} var p *[3]int p = &a fmt.Println((*p)[1]) //输出:4 }

    推荐阅读