切片
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. xorm:golang的orm(只写了一小部分)

    xorm xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便.这个库是国人开发的,是基于原版 xorm:https://github.com/go-xorm/xorm 的定制 ...

  2. PAT Basic 1001 害死人不偿命的(3n+1)猜想 (15 分)

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 ( 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 年的世界 ...

  3. python之django_form组件笔记

    Form字段 Field required=True, 是否允许为空 widget=None, HTML插件 label=None, 用于生成Label标签或显示内容 initial=None, 初始 ...

  4. 模拟赛小结:2017 China Collegiate Programming Contest Final (CCPC-Final 2017)

    比赛链接:传送门 前期大顺风,2:30金区中游.后期开题乏力,掉到银尾.4:59绝杀I,但罚时太高卡在银首. Problem A - Dogs and Cages 00:09:45 (+) Solve ...

  5. 牛客练习赛46 C 华华跟奕奕玩游戏 (期望,概率)(详解)

    链接:https://ac.nowcoder.com/acm/contest/894/C 来源:牛客网 华华跟奕奕玩游戏 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K ...

  6. 火焰图(Flame Graphs)的安装和基本用法

    火焰图(Flame Graphs) 一.概述: 火焰图(flame graph)是性能分析的利器,通过它可以快速定位性能瓶颈点. perf 命令(performance 的缩写)是 Linux 系统原 ...

  7. Android 热修复(一)

    名词: dex:java文件编译class 然后生成 dex文件在Android上运行: 1.dex分包: 2.找出出现问题的dex文件进行替换操作 3.下载dex文件,静默替换有问题的dex文件,进 ...

  8. DevExpress ASP.NET Core v19.1版本亮点:数据网格和树列表

    行业领先的.NET界面控件DevExpress 发布了v19.1版本,本文将以系列文章的方式为大家介绍DevExpress ASP.NET Core Controls v19.1中新增的一些控件及增强 ...

  9. DevExpress ASP.NET Core v19.1版本亮点:Rich Text Editor

    行业领先的.NET界面控件DevExpress 发布了v19.1版本,本文将以系列文章的方式为大家介绍DevExpress ASP.NET Core Controls v19.1中新增的一些控件及增强 ...

  10. Jenkins环境搭建遇到的问题

    参考文章 https://www.cnblogs.com/yuanluo9898/p/10724252.html 问题一:tomcat启动乱码,如图所示 解决方案:https://blog.csdn. ...