Go基础(幕客网视频学习笔记)

go语言的特性

  • golang是一门开源的编程语言,2007年诞生,2009年11月开始开源。
  • golang的特点
    • 运行效率高:go是一门编译性的语言,程序再开发完成之后只需要编译一次,后续不需要进行编译。
    • 开发效率高,语法比较少,关键字比较少,开发的风格比较简单,限制比较简单
    • 部署简单:直接把编译后的文件放到服务器上就能发布服务
    • 实现多核并发:通过go语言的关键字
    • 内置runtime:介于go语言和系统之间的,可以进行性能监控和GC问题排查
    • 强大的标准库和网络库
    • 内置强大的gofmt,统一代码风格
  • golang的应用
    • 服务器编程、虚拟机处理、文件系统、数据打包、处理日志
    • 分布式系统、数据库代理、中间件
    • 网络编程、API应用
    • 云平台
  • golang的环境搭建和IDE的安装
    • golang语言的目录结构
      • bin:可执行文件
      • doc:go语言的使用手册
      • pkg:
      • src:开发使用的源码文件
    • goPATH的语言的结构
      • src:源码目录
      • pkg:go install安装扩展的时候会用到
      • bin:可执行文件自动放在bin目录下面
  • golang的命令行
    • go build:用于编译源码文件、代码包、依赖包,能够生成可执行文件,直接执行即可
    • go run:可以编译并运行go源码文件
    • go get:动态的获取成代码包
  • golang的IDE工具
    • sublime text:
    • Goland:GOROOT是go语言的加载目录、GOPATH是工作空间的位置
    • liteide:
      Golang的基础语法
    • 关键字、标识符、注释、基础结构
      • 25个关键字和36个标识符
      • 注释分为多行注释(/**/)和单行注释(//)
    • package
      • package是最基本的分发单位和工程管理中依赖关系的体现
      • 每个GO语言源文件的开头都拥有一个package声明,表示源文件所属代码包
      • 要生成go语言可执行程序,必须要有main的package包,且必须该包下有main函数
      • 同一个路径下面只能存在一个packgage,一个package可以拆分成多个文件组成
    • import
      • 如果一个main中导入其他包,包将被顺序导入
      • 如果导入的包中依赖其他包(包B),会首先导入B包,然后初始化B包中的常量和变量,最后如果B包中有init,会自动执行init();
      • 所有导入包完成后才会对main中的常量和变量进行初始化然后执行main中的init函数(如果存在),最后执行main函数。
      • 如果一个包被导入多次,而该包只会被导入一次
    • import别名
      • 将导入的包命名为另一个容易记忆的别名
      • 点(.)操作的含义是:点(.)表示的包导入后,调用该包中函数时可以省略前缀包名
      • 下划线()含义是:导入该包,但不导入整个包,而是执行该包中的init函数,因此无法通过包名来调用包中的其他函数。使用下划线()操作往往是为了注册包中的引擎,让外部可以方便调用。
    • 数据类型
      • 说明:类型的零值不是空值,而是某个变量被声明之后的默认值一般情况下,数值类型的默认值是0,布尔类型的值是false,string类型的默认值是空字符串。
      • 数值类型、字符串类型、布尔类型(Unsafe.Sizeof(type_value):输出占用的字节,例如int32输出的是4,即32位bit)
        • 整数:无符号整型(uint8、unit16、unit32、uint64)和有符号整型(int8、init16、int32、int64)
        • 浮点类型:浮点(float32、float64)和复数(conplex64、complex128)
        • 其他:字节(byte)、rune(int32的别名)、int(根据系统的位数动态的指定位数,32位系统是32,64位系统是64)、uint、uintptr
        • 布尔类型:bool
        • 字符串:string(UTF-8编码)
    • 变量和常量
      • 变量的声明、变量的赋值、变量的声明和赋值同时进行,可以多个变量同时进行
      • 分组变量声明:中间的变量之间不需要有逗号
      • 全局变量必须使用var关键字,局部变量可以省略
      • 特殊变量”_“,可以理解为垃圾桶,在接下来的程序中不需要这个值
      • 通过reflect.TypeoOf(变量)来获取变量的类型
    • 变量的类型转换
      • Go语言中不存在隐式转换类型转换必须都是显式的
      • 类型转换只能发生在两种兼容的类型之间,不同类型是不能进行转换的
      • 类型转换的格式:<变量名称> [:] = <目标类型>(<需要转换的变量>)
      • float转为为int的时候会有精度的损失
    • 变量可见性规则
      • 大写字母开头的变量是可到导出的,也就是其他包可以读取的,是公用变量
      • 小写字母开头的变量就是不可导出的,是私有变量
    • 常量
      • golang中常量的定义形式
        • 显式:const indentifier [type] = value
        • 隐式:const identifier = value
      • 常量可以使用内置表达式定义,len()、unsafe.SizeOf()
      • 常量范围目前只支持布尔型、数字型和字符串
    • iota
      • iota在const关键字出现的时候将会被重置为0
      • const中每新增一行常量声明将使iota技术增加一次
      • iota的常用语法
        • 跳值使用法:通过下划线()来实现,空行只有下划线(
        • 插队使用法:
        • 表达式隐式使用法:
        • 单行使用法
    • go运算符
      • 算法运算符:+、-、*、/、%、++、--
      • 关系运算符:==、>、<、!=、>=、<=
      • 逻辑运算符:&&、||、!
      • 按位运算符:&、|、^、<<、>>
      • 赋值运算符
posted @ 2018-11-28 15:55  木鱼cavalry  阅读(169)  评论(0编辑  收藏  举报