1.slice:作为参数传递时,传递的是地址,当append时,在新的内存地址分配数据,但是没有返回给原的slice,只能通过返回值的方式赋值给slice
2.func(a []int):传递,可以
3.匿名函数:函数内部的声明匿名函数
4.闭包:初始化,使用闭包
5.defer(延迟):
1>类似析构函数,在函数执行结束后按照调用顺序,反序执行(栈)
2>即使发生严重错误也执行,前提是没有发生错误之前先注册
3>支持匿名函数
4>常用于资源清理,文件关闭,解锁等
5>匿名函数访问变量,如果是直接访问,则访问引用(即最后执行时的参数值),如果是传值访问,则是拷贝
6>go 没有异常机制,但可以panic/recover模式处理错误,panic可以在任何地方引发,recover只有在defer 调用的函数中有效,并且处理panic后,程序可以继续执行
6.struct:
语法类似c,功能就是类,成员属性可以无名;
但必须有类型声明,当出现匿名对象时,必须显式初始化;
"=="判断:属性相同时返回true,但是对象的地址不同,和equal相同
7.点运算符与指针:与cc++不同,即使是指针访问属性也使用点语法,所以声明时,保存对象的地址,操作指针时可以使用点语法操作
8.值传递和引用传递:除了指针、chanel、匿名函数访问是引用传递,其他的都是值传递
9.匿名结构,初始化,嵌套:嵌套时,匿名属性,只能通过链式赋值的方式赋值
10.继承:GO中不存在继承关系,但存在组合,即父类结构作为成员存放;
组合实际是将其属性和方法赋值放在子类中,所以可以直接点语法访问父类的属性和方法;
当匿名组合与当前组合属性、方法重名时不报错,点语法作用的是当前结构的属性、方法;
如果想访问匿名结构的同名属性、方法,直接点语法其匿名结构名后访问其属性、方法;
同级不能同名属性、方法,可以调整组合解决;
不同级可以同名属性、方法,点语法访问即可。
11.在线项目api生成:gowalker.org/,阅读开源项目非常方便
12.方法:method
接收者receiver,表明方法所属结构,基本数据类型可以type,作为接收者,为其增加方法;
不支持重载,即同一结构下的方法不允许同名;
对象调用方法,类方法调用对象;
属性首字母大写是public,属性首字母小写是包内访问权限;
13.接口:interface
>=1个的方法签名集合
只要实现了方法签名相同的方法,即实现了接口
接口只是方法声明,没有实现,没有数据字段
接口可以匿名嵌套,也可嵌套如结构中
14.多态:OK patern判断
接口可以指向所有实现接口结构的对象;
interface{} 可以指向所有对象,使用type swtich判断方便;
结构之间是组合关系,不存在继承,所以无法多态,无法强转;
接口调用不会做receiver的自动转换;
15.反射:
t.Kind() == reflect.Struct 判断是否是结构类型;
.()判定其结构类型,.(type)可以通过switch判断;
v.Field(i).Interface()获得其属性的方法;
通过反射可以访问、设置属性(匿名属性),调用方法(方法嵌套):
1>普通属性:
读:
访问类型typeof,访问属性值valueof;
获取field:直接访问FieldByName,顺序访问FieldByIndex;
获得field值:Interface()
写:
reflect.ValueOf(传入指针,否则只是拷贝,拷贝值无法编辑),返回值是指针,无法通过指针设置值;panic: reflect: reflect.Value.SetFloat using unaddressable value
v = v.Elem(),获得原来数据的引用,直接设置数据即可;panic: reflect: call of reflect.Value.FieldByName on ptr Value
结构中只有被导出字段(首字母大写)才是可设置的;panic: reflect: reflect.Value.SetString using value obtained using unexported field

2>匿名属性:可以使用FieldByName、FieldByIndex
3>普通方法:
调用:
args := []reflect.Value{reflect.ValueOf("ss")}
v.Method(0).Call(args)
4>嵌套方法:嵌套时和属性一样,都可以直接调用
16.并发concurrency:
1>go执行
2>Channel:
通过消息来共享内存,channel是引用类型;
默认是阻塞同步的,make创建,close关闭,否则死锁;
可设置单项或双向通道,for range迭代;
可设置缓存大小,未被填满之前不会阻塞:有缓存是异步的,无缓存是同步的;
并行运行时,可以使用channel、sync进行异步控制,让主程序等待子程序执行完毕后结束;

WEB部分(beego框架):
1.controller 与view传值
{{with .name}} {{end}}
{{range .name}} {{.}} {{end}}
2.view内置的模板函数:str2html
3.orm:增删改查
所有操作函数都需要传入结构体的指针

go基础笔记的更多相关文章

  1. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  2. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

  3. MYSQL基础笔记(六)- 数据类型一

    数据类型(列类型) 所谓数据烈性,就是对数据进行统一的分类.从系统角度出发时为了能够使用统一的方式进行管理,更好的利用有限的空间. SQL中讲数据类型分成三大类:1.数值类型,2.字符串类型和时间日期 ...

  4. MYSQL基础笔记(五)- 练习作业:站点统计练习

    作业:站点统计 1.将用户的访问信息记录到文件中,独占一行,记录IP地址 <?php //站点统计 header('Content-type:text/html;charset=utf-8'); ...

  5. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  6. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 Create table [if not exists] 表名( 字段名 数据类型, 字段名 数据类型, 字段n 数据类型 --最后一行不需要加逗号 ...

  7. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  8. MYSQL基础笔记(一)

    关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...

  9. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

  10. JavaScript基础笔记一

    一.真假判断 真的:true.非零数字.非空字符串.非空对象 假的:false.数字零.空字符串.空对象.undefined 例: if(0){ alert(1) }else{ alert(2) } ...

随机推荐

  1. nyoj169-素数

    ms  |  内存限制:65535 KB 难度:1 描述 走进世博园某信息通信馆,参观者将获得前所未有的尖端互动体验,一场充满创想和喜悦的信息通信互动体验秀将以全新形式呈现,从观众踏入展馆的第一步起, ...

  2. 继续聊WPF——自定义CheckBox控件外观

    上一篇文章中谈到了BulletDecorator控件,就是为自定义CheckBox控件的模板做准备,因为CheckBox需要比较严格的布局,正好,BulletDecorator控件就合适了,该控件的布 ...

  3. 【Codeforces 996B】World Cup

    [链接] 我是链接,点我呀:) [题意] [题解] 你可以找出来a[i]里面的最小值mi,显然是这个数字最可能先变成0,但还不确定. 然后用mi/n得到你最少需要走多少圈才能让那个mi变成" ...

  4. Spring Cloud-Ribbon实现客户端的服务均衡(三)

    客户端负载均衡与服务端负载均衡 服务端负载均衡 通过服务端负载均衡设备维护的服务清单根据算法(轮训 权重负载 流量负载)取出服务地址 进行转发 客户端负载 将指定服务的服务清单订单(注册中心)下来 在 ...

  5. 洛谷 P1197 BZOJ 1015 [JSOI2008]星球大战 (ZOJ 3261 Connections in Galaxy War)

    这两道题长得差不多,都有分裂集合的操作,都是先将所有操作离线,然后从最后一步开始倒着模拟,这样一来,分裂就变成合并,也就是从打击以后最终的零散状态,一步步合并,回到最开始所有星球都被连为一个整体的状态 ...

  6. Adaptively handling remote atomic execution based upon contention prediction

    In one embodiment, a method includes receiving an instruction for decoding in a processor core and d ...

  7. 洛谷—— P2690 接苹果

    https://www.luogu.org/problem/show?pid=2690 题目背景 USACO 题目描述 很少有人知道奶牛爱吃苹果.农夫约翰的农场上有两棵苹果树(编号为1和2), 每一棵 ...

  8. RabbitMQ发布订阅实战-实现延时重试队列

    RabbitMQ是一款使用Erlang开发的开源消息队列.本文假设读者对RabbitMQ是什么已经有了基本的了解,如果你还不知道它是什么以及可以用来做什么,建议先从官网的 RabbitMQ Tutor ...

  9. Spring Boot上传文件

    我们使用Spring Boot最新版本1.5.9.jdk使用1.8.tomcat8.0. <parent> <groupId>org.springframework.boot& ...

  10. requireJS文件夹

    前言 对于像我这样的requireJS刚開始学习的人而言,requireJS最难理解的部分应该是它的路径问题.晚上随便折腾了一下,算是略微理清了这个文件夹问题吧. requireJS学习网址:requ ...