美文网首页
第03天(复合类型)_03

第03天(复合类型)_03

作者: lucas777 | 来源:发表于2019-12-10 15:39 被阅读0次

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

}

相关文章

  • 第03天(复合类型)_03

    13_数组做函数参数.go 14_数组指针做函数参数.go 15_切片的长度和容量.go 16_切片的创建.go ...

  • 第03天(复合类型)_01

    01_指针基本操作.go 02_不要操作没有合法指向的内存.go 03_new函数的使用.go 04_普通变量做函...

  • 第03天(复合类型)_02

    06_为什么需要数组.go 07_数组的基本使用.go 08_数组的初始化.go 09_二维数组的介绍.go 10...

  • 第03天(复合类型)_04

    18_切片和底层数组关系.go 19_append函数的使用.go 20_append扩容特点.go 21_cop...

  • Day_03 复合类型

    1.利用cin、cin.get()和cin.getline()输入字符串的区别iostream中的类cin提供了一...

  • 第4章 复合类型

    复习题 如何声明下述数据?a. actor是由30个char组成的数组。答:char actor[30];。b. ...

  • 第03天(复合类型)_map的基本使用

    24_map的基本使用.go 25_map赋值.go 26_map遍历.go 27_map删除.go 28_map...

  • 复合类型

    引用 引用(reference)为对象起了另外一个名字,引用类型应用(refers to)另外一种类型。通过将声明...

  • [C++ 语言入门到精通] 目录大纲

    第1章 C++简介和历史 第2章 进入C++的世界 第3章 数据类型和运算符 第4章 复合类型 第5章 循环控制和...

  • C++复合类型之引用和指针

    1. 什么是复合类型 复合类型(compound type)是指基于其它类型定义的类型(eg: 引用和指针)。 2...

网友评论

      本文标题:第03天(复合类型)_03

      本文链接:https://www.haomeiwen.com/subject/bcjggctx.html