• Go语言引用类型


    切片
    1、切片定义
    a) 声明一个切片
            var slice []int
            var slice = []int{1, 2, 3} var slice []int = []int{1, 2, 3}
             b) 通过make来创建切片
            var slice = make([]int, 10)
             c) 通过 := 语法来定义切片
            slice := []int{}
            slice := make([]int, 10)
            slice :
    = make([]int, 10, 10)
             d) 通过操作数组来创建切片
                var array = [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
                var slice []int = array[2:8]            
             e) 通过两个冒号创建切片,slice[x:y:z]切片实体[x:y],切片长度len = y-x,切片容量cap = z-x
                slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
                slice := slice[2:6:8]
          2、切片操作
    a) 使用append函数在slice尾部添加数据
                var a = []int{1, 2, 3}
                b := append(a, 4)    
             b) 使用copy() 函数 copy 在两个 slice 间复制数据,复制长度以 len 小的为准
                 var a = []int{1, 2, 3, 4, 5}
                 b := []int{100, 200}
                 copy(a, b)        

    容器
    1、Map定义
    a) 声明一个Map
            var m map[int]string
             b) 通过make来创建Map
                var m1 map[int]string = make(map[int]string, 10)
                var m2 = make(map[int]string, 10)
             c) 通过 := 语法来定义Map
                m1 := map[int]string{}
                m2 := make(map[int]string, 10)

    2、Map增删改查操作
            m := map[string]string{"key0": "Linux", "key1": "Python"}
             a)增
            m["key2"] = "oldboy"
             b)查
            value, ok := m["key0"]
             c)删
            delete(m, "key1")
             d)改
            m["key1"] = "Golang"
       注意:Map可以使用len()函数,但不能使用cap()函数

    管道
    1、Channel定义
    a) channel声明
                var ch chan int
                var ch chan string
                var ch chan map[int]string
             b) 使用make定义,无缓冲channel
                var ch1 chan int = make(chan int)
                var ch2 = make(chan int)
                ch3 := make(chan int)        
             c) 使用make定义,有缓冲channel
                var ch1 chan int = make(chan int, 10)
                var ch2 = make(chan int, 10)
                ch3 := make(chan int, 10)
             d) 只读channel(chan在<-之后)
                var ch1 <-chan int
                var ch2 <-chan int = make(<-chan int, 10)
                var ch3 = make(<-chan int, 10)
                ch4 := make(<-chan int, 10)
             e) 只写channel(chan在<-之前)
                var ch1 chan<- int
                var ch2 chan<- int = make(chan<- int, 10)
                var ch3 = make(chan<- int, 10)
                ch4 := make(chan<- int, 10)
    注意:普通 channel 可以隐式转为只读channel或只写channel;只读channel或只写channel不能转为普通 channel。

    2、管道操作
    a) channel 写入、读取操作
                ch := make(chan int, 1)
                ch <- 99            // 写入chan
                value, ok := <-ch  // 读取chan
             b) channel 关闭操作
                 close(ch)
                 注意:向已经关闭的 channel 发送数据会引发 panic 错误
  • 相关阅读:
    C++ 引用的作用和用法
    const和指针
    sizeof的用法
    C++数组初始化的问题
    C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、
    c++变量在内存中的存储区域(转)
    C语言的 &数组名 和 数组名的区别
    C语言运算中的数据类型自动转换原则
    链表反转
    常见的排序方法
  • 原文地址:https://www.cnblogs.com/ywjfx/p/10385876.html
Copyright © 2020-2023  润新知