学习笔记 - Go - 简介

Posted 欧阳青星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记 - Go - 简介相关的知识,希望对你有一定的参考价值。

Go 特点
Go 语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。主要目标是“兼具 Python 等 动态语言的开发速度和 C/C++ 等 编译型语言的性能与安全性”( 快速编译,高效执行,易于开发)。 可访问 底层操作系统 ,提供了强大的 网络编程并发编程 支持。
 
Go 与 C 的区别
1. 去掉循环冗余括号。for (int i = 0 ; i < 10 ; i++)  变为 for i := 0 ; i < 10 ; i++。
2. 去掉表达式冗余括号。if (表达式) 变为 if 表达式。
3. 强制代码风格。左括号不能在单独的行上,无需分号换行。
4. 强制自增方式。只能写作 i++,其他情况视作编译错误。
 
Go 项目目录结构
- src:放置项目和库的源文件。
- pkg:放置编译后生成的包/库的归档文件。
- bin:放置编译后生成的可执行文件。
 
静态语言与动态语言区别
 
编译前确定
变量的 类型
类型匹配检查
优缺点
例子
静态语言
使用变量前
需要声明
IDE有较强的校验能力,对开发有保障;
第三方代码对代码侵害性低;
C、C++、C#、Go、
Java(先编译成.class再由JVM解释)
动态语言
使用变量前
不需要声明
无,自带多态
代码简洁可读性高,某些场景下可读性低;
Python、Ruby、javascript
 
编译型语言和解释型语言
 
特点
优缺点
例子
编译型语言
解释器一句一句“翻译”成机器语言来一句一句执行
执行速度快,内存开销小,调试排错帮助小,文件大,安全性低,依赖平台,难实现
C、C++、Go
解释型语言
编译器来编译成机器语言,然后可直接运行这个编译成的“可执行文件”
和上者相反
Java、Python、JavaScript
 
Go 语言的项目:Qt、K8s、Docker。
Go 语言与 C 语言的性能差距大概在 10%~20% 之间。
IDE 推荐  JetBrains 的  Goland。
 
指令
- go run hello.go    执行代码
- go build hello.go    生成二进制文件
 
想要构建一个项目,就需要将这个项目的目录添加到 GOPATH 中,多个项目之间可以使用;分隔。
 
可以说,Goroutine 是 Go 最显著的特征。它用类协程的方式来处理并发单元,却又在运行时层面做了更深度的优化处理。这使得语法上的并发编程变得极为容易,无须处理回调,无须关注线程切换,仅一个关键字,简单而自然。
 
虽然一些编程语言的框架在不断地提高多核资源使用效率,例如 Java 的 Netty 等,但仍然需要开发人员花费大量的时间和精力搞懂这些框架的运行原理后才能熟练掌握。
 
作为程序员,要开发出能充分利用硬件资源的应用程序是一件很难的事情。现代计算机都拥有多个核,但是大部分编程语言都没有有效的工具让程序可以轻易利用这些资源。编程时需要写大量的线程同步代码来利用多个核,很容易导致错误。
 
Go 语言正是在多核和网络化的时代背景下诞生的原生支持并发的编程语言。Go 语言从底层原生支持并发,无须第三方库,开发人员可以很轻松地在编写程序时决定怎么使用 CPU 资源。
 
Go 环境目录结构
目录名
说明
api
每个版本的 api 变更差异
bin
Go 源码包编译出的编译器(Go)、文档工具(godoc)、格式化工具(gofmt)
doc
英文版的 Go 文档
lib
引用的一些库文件
misc
杂项用途的文件,例如  Android 平台的编译、git 的提交钩子等
pkg
Windows 平台编译好的中间文件
src
标准库的源码
test
测试用例
 
Go 标准库
Go语言
标准库包名
功  能
bufio
带缓冲的 I/O 操作
bytes
实现字节操作
container
封装堆、列表和环形列表等容器
crypto
加密算法
database
数据库驱动和接口
debug
各种调试文件格式访问及调试功能
encoding
常见算法如 JSON、XML、Base64 等
flag
命令行解析
fmt
格式化操作
go
Go 语言的词法、语法树、类型等。可通过这个包进行代码信息提取和修改
HTML 转义及模板系统
image
常见图形格式的访问及生成
io
实现 I/O 原始访问接口及访问封装
math
数学库
net
网络库,支持 Socket、HTTP、邮件、RPC、SMTP 等
os
操作系统平台不依赖平台操作封装
path
兼容各操作系统的路径操作实用函数
plugin
Go 1.7 加入的插件系统。支持将代码编译为插件,按需加载
reflect
语言反射支持。可以动态获得代码中的类型信息,获取和修改变量的值
regexp
正则表达式封装
runtime
运行时接口
sort
排序接口
strings
字符串转换、解析及实用函数
time
时间接口
text
文本模板及 Token 词法器
 
 
 
 
 
 
 
 
 
 
 
 

以上是关于学习笔记 - Go - 简介的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记 - Go - 简介

学习笔记 - Go - 简介

Go-Golang学习总结笔记

Go学习笔记Let's 干

ajax请求返回json数据--Go语言学习笔记

Docker学习笔记-简介