这周感觉事情好多,好忙,所以到现在GoLang的PPT还没准备,周五云计算课要就大家讲介绍Go语言的部分知识,想着做PPT,不如记录在这里。
什么是GoLang
首先编程语言分为机器语言、汇编语言和高级语言(分类不同,有的还多分了脚本语言),其中高级语言又可以分为面向对象和面向过程。
下面介绍都是根据自己的理解所写的,所以不能保证100%正确和通俗易懂(官方的解释请善用搜索引擎)
- 机器语言就是直接用二进制01进行表示的计算机程序和指令(会机器语言的人得有多厉害的记忆力,太可怕了,目前没遇到过),比如:0000 代表 加载(LOAD)、0001代表存储(STORE)等等,就是给每个指令编码,然后写出各种毫无逻辑的指令编码,不像高级语言,至少有自然语言的元素,有些单词还是能够看得懂的。
- 汇编语言就是比机器语言抽象了一层的编程语言,汇编语言就有了自然语言的成分了,有些直接就是单词,比如:MOV、ADD、SUB、PUSH等指令,高级语言都会有编译过程, 在编译成机器代码之前,会保留汇编语言,之前弄过反编译和内存分析,就是用的OD(ollydbg)把exe导入,然后就可以看到程序是怎么运行的,内存是怎么变化的,OD显示分析的就是汇编的代码。
- 高级语言有好多种,我接触过的有C,C++,C#,JAVA,PYTHON等,接触的最早的就是C语言了,而且但是开发单片机做机器人比赛的,用的STC51、STM32、飞思卡尔K60用的都是C。
计算机语言具有高级语言和低级语言之分
。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。编写的程序称之为源程序。(来自百度百科)
所以GoLang
就是谷歌2009发布的第二款开源编程语言,而且是属于高级语言。
扯了那么多,终于回到轨道上了。
Go语言指针
学过C语言的时候,都知道指针
是什么?指针简单理解起来就是用来存储内存地址的一个数据类型,各种变量和函数(也有函数指针)存储在计算机里面都会有存储地址,而这个地址就可以用指针来存和被指针引用。Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。
以下实例演示了变量在内存中地址:
1 | package main |
执行以上代码输出结果为:
1 | 变量的地址: 20818a220 |
注:不同机器得到的地址是不一样的
所以
指针
就是一个用来存地址
的数据类型,感觉跟C语言的指针没啥差别。
类似于变量和常量,在使用指针前你需要声明指针。指针声明格式如下:
1 | var var_name *var-type |
var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。以下是有效的指针声明:
1 | var ip *int /* 指向整型*/ |
如何使用指针
- 声明和定义指针
- 给指针赋值
- 引用指针
在指针类型前面加上 * 号(前缀)来获取指针所指向的内容。
1 | package main |
Go 空指针
当一个指针被定义后没有分配到任何变量时,它的值为 nil,所以nil指针也称空指针,在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值,指针变量通常缩写为ptr
实例:
1 | package main |
空指针判断:
1 | if(ptr != nil) /* ptr 不是空指针 */ |
什么是JSON
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率(百度百科解释)。
所以JSON长下面这个样子:
1
{"firstName": "json"}
JSON 键值(Key-Value)对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 “” 包裹,使用冒号 : 分隔,然后紧接着值,而且JSON里面还可以嵌套JSON对象,比如:
1
2
3
4{
{"firstName": "json"},
{"LastName": "json2"}
}
gjson使用
- 获取值
1 | package main |
更详细的可以直接看github上的README。
参考:
1 | 待续 |