切片
1、切片定义
a) 声明一个切片
        var slice []int
        var slice = []int{, , }
var slice []int = []int{, , }
         b) 通过make来创建切片
        var slice = make([]int, )
         c) 通过 := 语法来定义切片
        slice := []int{}
        slice := make([]int, )
        slice := make([]int, , )
         d) 通过操作数组来创建切片
            var array = [...]int{, , , , , , , , , }
var slice []int = array[:]
         e) 通过两个冒号创建切片,slice[x:y:z]切片实体[x:y],切片长度len = y-x,切片容量cap = z-x
            slice := []int{, , , , , , , , , }
slice := slice[::]
      2、切片操作
a) 使用append函数在slice尾部添加数据
            var a = []int{, , }
b := append(a, )
         b) 使用copy() 函数 copy 在两个 slice 间复制数据,复制长度以 len 小的为准
             var a = []int{, , , , }
b := []int{, }
copy(a, b)
容器
1、Map定义
a) 声明一个Map
        var m map[int]string
         b) 通过make来创建Map
            var m1 map[int]string = make(map[int]string, )
var m2 = make(map[int]string, )
         c) 通过 := 语法来定义Map
            m1 := map[int]string{}
m2 := make(map[int]string, )
   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, )
var ch2 = make(chan int, )
ch3 := make(chan int, )
         d) 只读channel(chan在<-之后)
            var ch1 <-chan int
var ch2 <-chan int = make(<-chan int, )
var ch3 = make(<-chan int, )
ch4 := make(<-chan int, )
         e) 只写channel(chan在<-之前)
            var ch1 chan<- int
var ch2 chan<- int = make(chan<- int, )
var ch3 = make(chan<- int, )
ch4 := make(chan<- int, )
注意:普通 channel 可以隐式转为只读channel或只写channel;只读channel或只写channel不能转为普通 channel。

   2、管道操作
a) channel 写入、读取操作
            ch := make(chan int, )
ch <- // 写入chan
value, ok := <-ch // 读取chan
         b) channel 关闭操作
             close(ch)
注意:向已经关闭的 channel 发送数据会引发 panic 错误

Go语言引用类型的更多相关文章

  1. Go语言目录

    为什么学习Go语言 第一章 环境搭建 Windows搭建Go语言环境 第二章 Go语言基础 Go语言介绍 Go语言命名 Go语言内置类型和函数 Go语言特殊函数介绍 Go语言运算符 第三章 Go语言程 ...

  2. go语言学习之路三:切片

    前面讲了变量的有关知识,这里对于其他的数据类型就不多作介绍,(和C差不多),因此重点来讨论下切片. 一.切片是引用类型,这里要稍微介绍两个概念:值类型,构造类型和引用类型 1.值类型:是一种由类型的实 ...

  3. Java程序员学C#基本语法两个小时搞定(对比学习)

    对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. 1.引包 using System;java用import ...

  4. [转] Java程序员学C#基本语法两个小时搞定(对比学习)

    Java程序员学C#基本语法两个小时搞定(对比学习)   对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. ...

  5. C#基础教程/适合初学者

    C#基础教程 第一章       C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序.当 ...

  6. [Golang学习笔记] 07 数组和切片

    01-06回顾: Go语言开发环境配置, 常用源码文件写法, 程序实体(尤其是变量)及其相关各种概念和编程技巧: 类型推断,变量重声明,可重名变量,类型推断,类型转换,别名类型和潜在类型 数组: 数组 ...

  7. 03C#数据类型

    C#数据类型 值类型和引用类型区别 在C#语言中,值类型变量存储的是指定数据类型的数据,值类型变量的值(或实例)存储在栈(Stack)中,赋值语句是传递变量的值.引用类型(例如类就是引用类型)的实例, ...

  8. go语言关于值类型和引用类型

    前言:关于值类型和引用类型确实是个比较绕的问题,之前在学校的时候学习C语言的时候,就感觉没有看太懂,后面看java,关于引用也是模模糊糊,这个东西也确实比较抽象,估计好多写了好几年代码的人有也有些迷惑 ...

  9. unity3d脚本语言中的引用类型

    在之前的文文里有说到,值类型和引用类型,那么这会就单独说下引用类型: Unity3D中的C#语言提供了专门的类型来为开发者提供使用C#开发游戏的便利条件: 在该引擎中,使用UnityEngine命名空 ...

随机推荐

  1. python 读excel表操作

    import xlrd # 打开文件 data = xlrd.open_workbook('测试表.xlsx') # 查看工作表 data.sheet_names() print("shee ...

  2. Delphi ComboBox组件

  3. zabbix 邮件报警事件:Zabbix discoverer processes more than 75% busy

    Problem has been resolved at :: on Problem name: Zabbix discoverer processes more than % busy Host: ...

  4. [牛客] [# 1108 E] Grid

    2019牛客国庆集训派对day3 链接:https://ac.nowcoder.com/acm/contest/1108/E来源:牛客网 题意 在一个$10 ^ 9 * 10 ^ 9$ 的方格中,每次 ...

  5. LeetCode_Bit Manipulation

    231. Power of Two Given an integer, write a function to determine if it is a power of two. class Sol ...

  6. dedecms织梦做中英文(多语言)网站步骤详解

    用dedecms织梦程序如何做中英文网站,下面是一个详细的图文教程,希望能帮助到大家. 以下是用dedecms织梦程序制作过的一个5国语言网站,下面开始教程. 一.首先在后台建栏目,有三点需要注意 1 ...

  7. eclipse中安装Activiti插件

    由于公司网络问题,不能在线安装,下载到本地的插件,安装也是各种问题,后面终于找到能安装的插件包 1.下载eclipse activiti插件包 链接:https://pan.baidu.com/s/1 ...

  8. [易学易懂系列|rustlang语言|零基础|快速入门|(19)|多线程]

    [易学易懂系列|rustlang语言|零基础|快速入门|(19)|多线程] 实用知识 多线程 我们今天来讲讲Rust中的多线程. 我直接来看看代码: use std::thread; use std: ...

  9. 浏览器自动将参数中的url转码问题

    遇到一个问题, 开始的url如下: http://localhost:6666/pages/wxpay.html? code_url=weixin://wxpay/biz 请求转发到谷歌浏览器打开后变 ...

  10. State Processor API:如何读取,写入和修改 Flink 应用程序的状态

    过去无论您是在生产中使用,还是调研Apache Flink,估计您总是会问这样一个问题:我该如何访问和更新Flink保存点(savepoint)中保存的state?不用再询问了,Apache Flin ...