zoukankan      html  css  js  c++  java
  • 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运算符
        • 算法运算符:+、-、*、/、%、++、--
        • 关系运算符:==、>、<、!=、>=、<=
        • 逻辑运算符:&&、||、!
        • 按位运算符:&、|、^、<<、>>
        • 赋值运算符
  • 相关阅读:
    2019春总结作业
    第十周作业
    第九周作业
    第八周作业
    第七周作业
    202103226-1 编程作业
    1 20210309-2 阅读任务
    1 20210309-1 准备工作
    课程总结
    第十三周总结
  • 原文地址:https://www.cnblogs.com/hudiblogs/p/10032598.html
Copyright © 2011-2022 走看看