Go语言既能达到静态语言的安全和性能,又达到了动态语言开发维护的高效,使用一个表达式来形容Go语音(Go = C + Python),说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。
  • 从C语言中继承了很多理念,包括表达式语法、控制结构、基础数据类型、调用参数传值、指针(弱化指针)等,也保留了和C语言一样的编译执行方式。
  • 函数可以返回多个值
  • 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
  • 垃圾回收机制,内存自动回收,不需要开发人员管理。
  • 天然并发
    • 从语言层面支持并发,实现简单
    • goroutine,轻量级线程,可实现大并发处理,高效利用多核
    • 基于CPS并发模型实现
  • 吸收了管道通信机制,形成Go语言特有的channel,通过管道channel,可以实现不同的goroute之间的相互通信
  • 新的创新,比如切片slice,延时执行defer等
变量声明的三种方式:
var i int
var i, j int
var i = 10
var i, j = 10, "str"
i := 10
i, j := 110, "str"

在全局作用域下一次性声明多个变量:使用var( )的形式

    var (
        x = 50
        y = "sdf"
    )

标识符的命名规则:

  • 由字母、数字、下划线组成(数字不能开头)
  • 下划线本身在Go中是一个特殊的标识符,成为“空标识符”,可以代表任何其他的标识符,但是它对应的值会被忽略(比如忽略某个返回值)。所以仅能被作为占位符使用,不能作为标识符使用。

标识符命名注意事项:

  • 包名和文件名保持一致,尽量采取有意义的包名,简短,有意义,不要和标准库冲突。
  • 变量名,函数名,常量名采用驼峰法。
  • 如果变量名,函数名,常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用(Go语言的特性,因为Go语音没有public,private,protect等概念)

系统保留关键字

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

预定标识符

appendboolbytecapclosecomplex
complex64complex128uint16copyfalsefloat32
float64imagintint8int16uint32
int32int64itoalenmakenew
nilpanicuint64printprintlnreal
recoverstringtrueuintuint8uintptr