第03天(复合类型)_03

2019-12-10  本文已影响0人  lucas777

13_数组做函数参数.go

package main //必须有个main包
import "fmt"
//数组做函数参数,它是值传递
//实参数组的每个元素给形参数组拷贝一份
//形参的数组是实参数组的复制品
func modify(a [5]int) {
    a[0] = 666
    fmt.Println("modify a = ", a)
}

func main() {
    a := [5]int{1, 2, 3, 4, 5} //初始化

    modify(a) //数组传递过去
    fmt.Println("main: a = ", a)
}

14_数组指针做函数参数.go

package main //必须有个main包

import "fmt"

//p指向实现数组a,它是指向数组,它是数组指针
//*p代表指针所指向的内存,就是实参a
func modify(p *[5]int) {
    (*p)[0] = 666
    fmt.Println("modify *a = ", *p)
}

func main() {
    a := [5]int{1, 2, 3, 4, 5} //初始化

    modify(&a) //地址传递
    fmt.Println("main: a = ", a)
}

15_切片的长度和容量.go

package main //必须有个main包

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    s := a[0:3:5]
    fmt.Println("s = ", s)
    fmt.Println("len(s) = ", len(s)) //长度  3-0
    fmt.Println("cap(s) = ", cap(s)) //容量  5-0

    s = a[1:4:5]
    fmt.Println("s = ", s)           //从下标1开始,取4-1=3个
    fmt.Println("len(s) = ", len(s)) //长度  4-1
    fmt.Println("cap(s) = ", cap(s)) //容量  5-1
}

16_切片的创建.go

package main //必须有个main包

import "fmt"

func main() {
    //自动推导类型, 同时初始化
    s1 := []int{1, 2, 3, 4}
    fmt.Println("s1 = ", s1)

    //借助make函数, 格式 make(切片类型, 长度, 容量)
    s2 := make([]int, 5, 10)
    fmt.Printf("len = %d, cap = %d\n", len(s2), cap(s2))

    //没有指定容量,容量和长度一样
    s3 := make([]int, 5)
    fmt.Printf("len = %d, cap = %d\n", len(s3), cap(s3))

}

func main01() {
    //切片和数组的区别
    //数组[]里面的长度时固定的一个常量, 数组不能修改长度, len和cap永远都是5
    a := [5]int{}
    fmt.Printf("len = %d, cap = %d\n", len(a), cap(a))

    //切片, []里面为空,或者为...,切片的长度或容易可以不固定
    s := []int{}
    fmt.Printf("1: len = %d, cap = %d\n", len(s), cap(s))

    s = append(s, 11) //给切片末尾追加一个成员
    fmt.Printf("append: len = %d, cap = %d\n", len(s), cap(s))

}

17_切片的截取.go

package main //必须有个main包

import "fmt"

func main() {
    array := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    //[low:high:max] 取下标从low开始的元素, len=high-low, cap=max-low
    s1 := array[:] //[0:len(array):len(array)] 不指定容量和长度一样
    fmt.Println("s1 = ", s1)
    fmt.Printf("len = %d, cap = %d\n", len(s1), cap(s1))

    //操作某个元素,和数组操作方式一样
    data := array[1]
    fmt.Println("data = ", data)

    s2 := array[3:6:7] //a[3], a[4], a[5]   len = 6-3=3    cap = 7-3=4
    fmt.Println("s2 = ", s2)
    fmt.Printf("len = %d, cap = %d\n", len(s2), cap(s2))

    s3 := array[:6] //从0开始,去6个元素,容量是10, 常用
    fmt.Println("s3 = ", s3)
    fmt.Printf("len = %d, cap = %d\n", len(s3), cap(s3))

    s4 := array[3:] //从下标为3开始,到结尾
    fmt.Println("s4 = ", s4)
    fmt.Printf("len = %d, cap = %d\n", len(s4), cap(s4))

}
上一篇 下一篇

猜你喜欢

热点阅读