使用Go像C/C++一样熟练-学习笔记
来源:互联网 发布:淘宝外卖就是饿了么 编辑:程序博客网 时间:2024/06/06 22:22
- 目的向细节进发
- 数据
- 方法
- 接口
为了达成如题的目标,仔细学习和试验了《Go语言学习笔记》5,6,7,10数据、接口、方法、反射四章。
以下学习要点笔记:
目的:向细节进发
- 数据库操作
- 文件读取
像C一样熟练,需要掌握 - Interface
像C++一样熟练,需要掌握
数据:
- 字符串
- 在结构体中byte怎么初始化?[]byte(“Hi”)
不知道怎么初始化确定的byte,下面提示错误:
type pe struct { magic [2]byte nt_head [4]byte } pe_work := [...]pe{ {}, {[2]byte("12"), [4]byte("1234")}, }
我解决了这个问题
tmp_a := [2]byte{'1', '2'}type pe struct { magic [2]byte } pe_work := [...]pe{ {tmp_a}, }
直接复制进去:
type pe struct { magic [2]byte } pe_work := [...]pe{ {[2]byte{'1', '2'}}, }
这让我明白go确实有规律,但是这规律……
- 不定参数,不定类型
http://blog.csdn.net/jaykiller123/article/details/50569995
涉及接口,反射。 - 数组√
切片√
[]就是切片,是通过指针引用原始数组的东西。
除了可从数组中产生,还可直接创建:两种方法
a := make([]int,len,cap)
显式初始化:
b := []int{10,20,5:30}
当然你可以不初始化而直接用append压入来代替初始化。
此外因为可以运行时指定长度,所以就像动态数组一样哈哈。
切片可以玩出一些花活:模拟栈。
[:2:4]是:
[:2:cap]字典√
同样引用类型,需要make或初始化语句创建
make(map[int]string)
make(map[int]string,1000)//也预先准备足够的空间,减少扩张时内存分配和重新哈希操作,来提高性能
因为字典不会收缩内存,大量数据的情况下,适时替换成新对象有必要。
if语句的一种很新奇的语法是:
if 算式;表达式{}//用ok来判断是否存在该键值if v,ok:=m["d"];ok{ fmt.Println(v)}
算式一般用来算表达式。它本身没有任何逻辑作用。
if最终要验证表达式的真假值。
迭代期间 删除和新增键值安全。
delete(m,k)
注意:一个任务对字典进行写操作时,其他任务不能“读,写,删除”该任务,否则崩溃。
你可以使用
数据竞争(data race)检查此类问题: go run -race test.go
此时可以使用sync.RWMutex读写锁实现同步,获得最佳性能。
- 结构
字段名用_的情况:
可以没有名字而只有类型,使用时类型即为属性名。(因此,一个struct中同一个类型的匿名属性只能有一个)
字段标签:
并不是注释,是元数据用来对字段描述
可反射获取,常被用做:格式校验,数据库映射等。
一个综合性的玩法是:
Golang:使用 httprouter 构建 API 服务器
方法:√
- 定义
- 匿名字段
- 方法集
方法套方法
接口
- 定义
用途:
对包外提供访问和预留扩展空间。
int怎么转bool?
自己定义函数。
重要特征:
将对象赋值给接口变量时,会复制该对象。
- 类型转换
abc.(type)
是转换类型。
type-swtich
var I Interfaceswitch I.(type)case char:break;
我大致理解这是怎么回事了。
Go的基础学习也告一段落了。
- 使用Go像C/C++一样熟练-学习笔记
- C语言就像菜刀一样
- 【学习笔记】熟练使用R软件
- 快速熟练使用numpy(学习笔记)
- ObjC学习2-语法循环、条件,原来像学C语言一样啊!
- 在VBScript中,像C一样使用include一个.vbs脚本
- 熟练掌握C?
- Go语言学习笔记----与C语言的比较学习
- java事务学习笔记(七)--像Spring一样使用Transactional注解(Annotation)
- 像程序员一样学习
- 像Asp一样轻松分页显示数据(C#)
- 像Asp一样轻松分页显示数据(C#)
- C++: 如果像定义endl(换行)一样定义tab(制表符)
- C也可以像C++一样有继承
- 啥时候能做到像编译器一样了解C++?
- 让Windows像Linux一样编译C/C++
- 像机器一样思考之c/c++语言(1)
- 用 Psyco让Python运行得像C一样快
- 8月5日邮件服务器故障报告(2008年)
- 使用VBA从海量Excel文件中模糊获取数据并生成新表(附实例)
- 【直观对比】奇偶校验 累加和校验 CRC校验
- Linux的进程控制
- Android模拟QQ登陆保存账号密码,初始化读取账号密码
- 使用Go像C/C++一样熟练-学习笔记
- 使用VBA从海量Excel文件中模糊获取数据并生成新表(附实例)
- 搜索:进入搜索到找到搜索结果
- 集合之--ArrayList操作
- SparkSQL的UDF和UDAF
- 使用VBA从海量Excel文件中模糊获取数据并生成新表(附实例)
- 【SEO】现在还需要meta Keywords么?
- Tensorflow实战学习(四十六)【TensoFlow开发环境,Mac,Ubuntu,Linux,Windows,CPU版本】
- PCA 处理 几十万维 数据?