前端analysis | 3w & 1h

go学习笔记二

2022-08-02

语言简介

1.Go语言即具备python等动态语言的开发速度,又拥有C/C++等编译型语言的性能与安全性。又被称作21世纪的C语言,不但能够访问底层操作系统还提供了强大的网络编程和并发编程,分布式编程。

为何创建GO

C语言,却难以开发,编译速度依赖性、运行时错误都非常多

java语言需要虚拟机才能运行代码

javascript和node.js 回调多,类型混乱,依赖性包查找也挺麻烦,更重包管理器

需要什么样的语言呢?

  • 需要快编译,类似解释性语言, 那么就只有参考Python,js 了
  • 不能类型混乱,可以参考Java ,C
  • 不能依赖混乱,可以参考java
  • 不能虚拟机,编译为字节码,装载为机器码;而是直接变为机器码
  • 但是内存问题,不能学C,只能学Java,自带内存管理
  • 响应大数据时代,突破线程限制,改用协程。协程很微型,不会占用电脑资源。一台电脑可以轻松开启成千上万个协程。

最终集合到的就是解释型的、强类型支持的,自带依赖包、内存管理 、直接机器码的

环境配置

下载

环境变量配置

安装成功与否,go version 进行check

windows

配置 GOPATH, 可以自定义目录

Linux

压缩文件解压到指定目录 

1
sudo tar -xzf go1.13.4.linux-amd64.tar.gz -C /usr/local
1
2
3
4
5
vim .bashrc
export GOROOT=/usr/local/go # 安装目录。
export GOPATH=$HOME/go # 工作环境
export GOBIN=$GOPATH/bin # 可执行文件存放
export PATH=$GOPATH:$GOBIN:$GOROOT/bin:$PATH # 添加PATH路径

添加环境变量到 .profile 这个配置文件中 

1
2
#?? 为何
export GOROOT="/usr/local/go"

导入包

1
import ( "fmt" "os" )

变量

定义

变量定义使用var

1
2
3
var name string ;

age := 12;

变量互换

不是从地址角度,从人角度,直接互换就行

1
2
var a, b int = 100,200;
a,b = b,a;

匿名变量

_ 下划线表示”_” 也称为空白标识符,任何类型都可以使用它进行赋值,而且任何类型赋值后都将直接被抛弃,所以在使用匿名变量时,表示后续代码不需要再用此变量

常量

  • 常量数值不能修改。
  • 常量定义后可以不使用。
  • 常量定义不能使用简短定义方式。
  • 常量中使用的数据类型只能是 整型、布尔、浮点、复数类型、字符串类型

iota常量

iota是常量里面的计数器,初始值默认值是0,可以被编译器自动修改,每const定义一组常量时,iota逐行自增1。常被用作枚举值

数据类型

基本数据类型和复合数据类型, 数据类型要兼容才能转换,否则容易丢失数据精度;Type(x)是强制转换。

基本数据类型

整型

byte uint8 的别称 rune int32 的别称

数据类型 说明 取值范围
有符号整数
int8 有符号 8位整数 -128到 127
int16 有符号 16位整数 -32768 到32767
int32 有符号 32位整数 -2147483648到2147483647
int64 有符号 64位整数 -9223372036854775808到9223372036854775807
无符号整数
uint8 无符号 8位整数 0到255
uint16 无符号 16位整数 0到65535
uint32 无符号 32位整数 0到4294967295
uint64 无符号 64位整数 0到18446744073709551615

浮点

float32 和 float64

在内存中占有的字节数不同
  • 单精度浮点数在机内占4个字节。
  • 双精度浮点数在机内占8个字节。
有效数字位数不同
  • 单精度浮点数 有效数字7位。
  • 双精度浮点数 有效数字16位。
使用情况区别
  • 一般用来表示美元和分的时候用单精度类型。
  • 超出人类经验的数字函数,例如 sin() cos() tan() sqrt() 都使用双精度值。

    布尔

    true 、false

    字符串

    字符

    位操作赋

  • ^ 异或 - 同为0 ,不同1
  • &^ 位清空 - a&^b , b为0去a;b为1,取0;
  • << , >>

    error

    复合数据类型

    类型输出

占位符 说明 举例 输出
%d 十进制的数字 fmt.Printf(“%d”,10) 10
%b 二进制的数字 fmt.Printf(“%b”,5) 101
%T 取类型 b :=true fmt.Printf(“%T”,b) bool
%s 取字符串 s :=”123” fmt.Printf(“%s”,s) 123
%t 取bool类型的值 b:=true fmt.Printf(“%t”,b) true
%p 取内存地址 p :=”123” fmt.Printf(“%p”, &p) 0xc0000461f0

标记

Go语言中有四类标记:标识符(identifiers)、关键字(keywords)、运算符(operators)标点符号(punctuation)以及字面量(literals)

逻辑控制

{} 代码块不可省略,但是() ,可以省略;

if

if条件判断语句中,可以插入一段执行赋值

1
if err:= function(); err == nil {}

for

简式声明可能常常出现在函数内部

1
2
3
4
5
for i:= 0 ; i < 100;i ++ {
if i == 5 {
break; // 只能结束当前一层循环
}
}

switch

可以不用特意添加break,结束语句; fallthrought ,会强制执行下一条case, 不论真假条件

return

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏