go语言环境及基本常识1
Easul Lv6

go语言的简单认识

用途

  • 用于处理区块链
    • Blockchain technology(BT),也叫做分布式账本技术
    • 去中心化,每个人都可以进行数据记录
  • 在处理数据和大并发时很强
    • 如美团后台流量支撑(排序,推荐,搜索等都是需要进行数据处理),提供负载均衡,cache,容错,按条件分流(这些需要大并发)
  • 用于后台游戏开发
    • 如仙侠道的通讯,逻辑,数据存储
  • 用于分布式,云计算,云服务
    • 盛大云CDN(Content Delivery Network)
    • 京东消息推送,分布式文件系统

go相关常识

  • 是Google创造的语言
  • 有应用go的公司
    • Google, AWS, Cloudflare, CoreOS,
  • go语言作用
    • 合理利用多核多CPU
    • 风格统一
    • 提高计算能力
    • 处理大并发
    • 编译快,同时具备脚本语言的快速开发
  • go语言设计者
    • Ken Thompson(肯·汤普森),Rob Pike(罗布·派克),Robert Griesemer(罗伯特·格瑞史莫)
  • go语言发展史
    • 2007年,三位大佬设计了go的原型
    • 2009年,Google开放go源码
    • 2015年,go1.5发布,移除了最后残余的C代码,里程碑式版本
    • 2017年,发布了go1.8, go1.9
    • 2018年,发布了go1.10
  • bit是计算机最小存储单位,byte是计算机基本存储单位
  • Go语言的字符有以下两种类型:
    • uint8类型:代表了ASCII码的一个字符。
    • rune类型:代表了UTF格式的一个字符(如中文、日文或其他复合字符),本质是int32类型。

特点

  • 有静态编译语言的安全和性能,也有动态语言开发维护的高效率
    • 可以看做Go = C + Python
  • go继承了C的很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等
  • go有包的概念(用于组织程序结构),每个文件都需要属于一个包
  • 有垃圾回收机制(C有内存泄露,会很快吃光内存),不需要处理垃圾
  • 天然并发
    • 语言层面即可支持
    • 使用goroutine实现大并发,高效利用多核,是轻量级线程
    • 基于CPS(Communicating Sequential Processes)实现
  • 吸收了管道通信机制,用于实现不同gotoute之间的通信
  • 函数可以返回多个值
    GO
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package main// 想当于这个文件属于main包

    import "fmt"// 这里是导入一个包

    // 第一个括号是参数,变量名写前边,变量类型写后边
    // 第二个括号是返回值类型
    // return直接返回两个值即可
    func getSumAndSub(n1 int, n2 int) (int, int) {
    sum := n1 + n2// 可以不写分号,编译器编译时自动添加
    sub := n1 - n2

    return sum, sub
    }
  • 有切片slice(相当于动态数组或Java的集合概念),延时执行defer

go语言的基础知识

常用单词

  • SDK(Software Development Kit)
    • 包括编译,开发工具和API文档
  • fmt(format)
  • escape(转义)
  • API(Application Program Interface,就是各个包下的函数)
  • Dos(Disk Operating System)

go的SDK目录解释

YAML
1
2
3
bin: go的指令
go: 用于编译和运行go文件
src: go源码,可以用于源码查看

go的环境变量

YAML
1
2
GOROOT: SDK安装根目录
GOPATH: 工作目录,用于放自己go的所有的项目

go的项目目录树

YAML
1
2
3
4
5
6
7
GOPATH: 工作目录
src: 存放源码
go_code: go代码
project: 项目名称
main: 包名,包内写go文件
hellodotgo: go的源文件
package: 包名

调用一个函数的时候需要先import包,然后包名.函数名

go的注意事项

  • 不需要写分号,写了也不算有问题
  • 定义了没用到的变量或import了不用的包,编译不通过
  • 块注释不能嵌套
  • 左大括号不能另起一行
  • 一行不超过80字符,否则换行

go的常用网站

编程技巧

安装与运行

  • linux软件安装在/opt
  • 执行某文件找不到是因为在当前目录找不到,同时也在环境变量里找不到
  • 源文件编译后变大是因为同时打包了很多依赖程序
  • \r与\n的区别
    • \r是回车不换行,后边的字直接覆盖前边的字,如123\r4就变成了423
    • \n是直接换行

如何快速深入学习一个新技术或者一个知识点

  1. 学习原因
    1. 有某些需求,需要解决某些问题
  2. 问题解决
    1. 现有技术可以解决就先解决
    2. 现有技术有缺陷,再学习新技术
  3. 新技术入门所需掌握的内容
    1. 原理
    2. 基本语法
    3. 快速入门案例
  4. 学习新技术的细节
    1. 如何使用更规范
    2. 使用时的陷阱
    3. 使用时需要注意什么

建议

  • 做了才会,而不是会了才做
 评论