一. Go语言起源、发展史及其作者
Go是一个混血儿,语言之间的混血使得Go有着很大的优势
Go被称作“类C语言”或“21世纪的C”
Go语言2009年发布,2012年Go语言发布1.0版本,此后发展迅速。
Go语言的作者是Rober Griesemer、Rob Pike 和 Ken Thompson。
二.GO语言领域及其特性
1.Go是一门适合做基础软件架构的语言,同时也适合做服务器,未来Goweb是一个趋势。
2.Go是一种编译型的语言,它综合了其他高级语言的优势,它语法简单,同时融入了GC机制,反射机制,等一系列低级语言没有的特性,但它却有着和C语言一样的运行速度。它的多线程充分利用了CPU核心,而且实现语法极其简单,所以高并发可以做的非常出色。“Go是一种开源的程序设计语言,它意在使得人们能够方便地构建简单、可靠、高效的软件。”(来自Go官网 golang.org)Go语言的身影在未来中会处处可见。Go语言可以很好的和C语言混用(cgo),实现更多底层的操作。
三.Golang的一系列语法特性的整理
1.Go语言原生的支持Unicode,所以它几乎可以处理全世界的语言文字
2.Go语言有和C一样的函数Printf()用于格式化输出
3.Go语言使用import关键字导入包(类似C语言中的库),原则是导入一个用一个,不可以出现导入某个包后,没有使用的情况,这种情况会导致编译失败
4.Go语言导入包有两种形式
import “fmt”这样逐个导入
或使用
import (
“fmt”
“os”
)
这种形式成批导入
5.Go语言函数声明格式 func 函数名(形参列表)(返回值列表){ }“重点是左花括号‘{’一定要和func关键字在同一行”
6.Go语言在单个语句结尾不需要加分号,多条语句写在同一行时要用分号隔开
7.表达式 a+b “+”后边可以有换行,“+”前边不能有换行
8.var关键字用于声明变量 如 var name string=“Bob” name 是变量名,string是变量类型
9.Go语言所有变量都是有默认值的,也是就说所有变量一经声明,就自带默认值
数值类变量的默认值是0
字符串类变量的默认值是””(空串)
布尔类型的变量默认值是false
接口与引用类型的默认值nil
数组和结构体类型的初始值以其内部的最小元素为标准
10.“:=”符号用于短变量声明,可同时声明>=1个变量,并且为他们同时赋值,短变量声明适合在方法内部使用
11.“+”运算对于字符串来讲是追加的操作 “hello”+”world” 结果是”helloworld”
12.Go语言只支持++,- -的后缀操作,这点不同于C/C++,并且j=i++ 是非法的,因为i++是语句,而不像C语言作为表达式
13.for是Go语言唯一的迭代语句,其格式为 for 条件1;条件2;条件3{ } 其中,1,3条件可以省,条件1用于初始,条件2判断状态,条件3用于迭代的因素
14.Go语言中不允许出现无用的临时变量,否则会出现编译错误
15.”_”下划线被称为空标志符,可以使用在任何语法需要变量名,但是程序逻辑不需要的地方
16.range 会产生一对值,即索引和这个索引所处的值
17.常量必须是数字、字符串、布尔值
18.Go语言指针的形式是 *int=&a ,指针不支持算术运算
19.Go语言注释有两种形式: //单行注释 , /****** 多行注释 *****/ 同C一样
/********* 程序结构 *********/
20.Go语言中函数(方法)被组织成源文件和包
21.Go语言中“名称”遵循以字母或下划线开头,后面可以跟任意个字符,数字,下划线的原则
22.Go语言可导出的形式是 变量或函数的首字母大写 如Printf()这个“fmt”包中的函数,可以被包外部引用
23.Go语言程序员声明变量时采用“驼峰式”的方格,更喜欢用大写字母分隔单词而不是下划线
24.Go语言有4个主要的声明,分别是:var(变量声明),const(常量声明),type(类型声明)(如同C的typedef),
func(函数声明)
25.Go程序存储在一个或多个以.go为后缀的文件中
26.Go语言文件形式是先package 、import、包级别的(类型,变量,常量,函数的声明,此处不区分顺序)
27 . “:=”表示声明,“=”表示赋值,形式: i,j := 1,2 。 m,n=n, m可以交换m,n中的值,所以这是一种非常人性化的设计
28.短变量“:=”声明时至少有一个新变量,否则编译无法通过
29.Go语言函数可以有多个返回值
30.使用x&(x-1)可以去除x最右边的非零位
31.声明周期是运行时属性,声明的作用域是编译时属性
32.常量、变量都不可以声明引用他自己,否则会编译报错
33.init()函数用于初始化包,他是被Go语言运行框架调用的,在全局变量定义之后
main()函数被调用之前调用
34.函数的局部变量的地址很安全,函数的局部变量在被返回后依然存在
35.时间戳的概念是格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)到现在的总秒数
(本笔记内容整理自《Go程序设计语言》,侵删)