go 学习笔记

go 学习笔记(一)


前言

接触了新的语言go,记录一下学习的笔记方便日后温故知新。


一、go 执行流程分析

//今天在使用goland的时候发现,如果使用goland自带的运行按钮运行代码,goland会在windows的user-appdata下生成 *.exe文件来运行代码,相当于先执行了build命令
//如果使用goland的终端来go run则不会在windows中生成 *.exe文件

如果是对源代码编译之后再执行
go build:(执行速度更快一点)
.go文件 - 编译go build -> 可执行文件(.exe或其他可执行文件) - 运行 -> 结果
go run:
.go文件 - go run -> 结果
区别:
1.如果先编译成可执行文件,我们可以把可执行文件拷贝到没有go开发环境的机器上运行(相比源代码很大,是因为把运行环境也打包到可执行文件当中了)
2.如果用go run 源代码 的方式来运行,则需要go运行环境
编译:
go build可以指定生成的二进制可执行文件的文件名称
go build -o hello_world_demo_1.exe hello3.go(实例目录E:\GoWorkSpace\src\mylib123aa)

二、程序开发注意事项

1.后缀为 .go
2.go程序执行入口为main函数
3.严格区分大小写
4.不需要以分号结尾
5.编译方式为逐行编译,不要把多条写在同一行
6.go语言定义的变量或者import的包必须要使用到,否则报错
7.大括号要成对出现缺一不可


三、语言转义字符

  1. \t 制表符,实现对齐功能
  2. \n 换行符
  3. \ 一个\
  4. " 一个"
  5. \r 一个回车

四、编码风格

1.官方建议使用行注释 //
2.正确的缩进和空白
3.格式化命令gofmt -w main.go
4.运算符两边加入空格
5.go语言的大括号第一个括号不可以换行
6.行长约定不超过80个字符,超过请换行展示
官方文档:https://pkg.go.dev/
编程指南:https://tour.go-zh.org/welcome/1 (右上角三条线可以查看指南详情)
API:https://pkg.go.dev/fmt#pkg-index (举例查询 fmt包内容,搜素后点击左侧树的Index查看多个examples)
中文文档:https://studygolang.com/pkgdoc

五、常用指令

DOS (Disk Operating System) 磁盘操作系统
基本操作原理:
进入终端,Win输入cmd打开dos操作终端对windows目录进行操作
目录操作
1.新建一个名为test的目录 md test
2.查看当前目录包含的目录 dir
3.切换盘符(当前演示切换到f盘) cd /d f:
4.切换到当前盘的其他目录 cd

文件操作
1.新建或者追加内容到文件里面去(书写hello到文件hello.txt当中,文件可以为目录结构 e:hello\hello.txt) echo hello > hello.txt
2.拷贝 copy abc.txt d:\test\ok.txt
3.剪切 move
4.删除 del
其他
1.清屏 cls
2.退出 exit

六、变量

变量
1.变量是程序的基本组成单位
2.变量相当于内存中的一个数据存存储空间
使用步骤
1.声明变量(定义变量) var i int
2.赋值 i=10
3.使用 fmt.Println(i)
注意事项
1.变量表示内存中的一个存储区域
2.该区域有自己的名称和类型
3.使用的方式
指定变量类型,声明后若不赋值使用默认值
根据值自行判断(类型推导)
省略var 使用 :=
4.多变量声明
age, name := 10, “张三”
5.该区域的数据值可以在同一个类型的范围变化
6.变量在同一个作用域不能重名
7.变量=变量名+值+数据类型
8.如果没有显式的复制则golang会使用默认值

七、数据类型

基本数据类型
1.数值型(int有符号,uint无符号)
整数类型(int,int8,int16,int32,int64,uint,uint8,uint16,uint32,uint64,byte)
浮点类型(float32,float64)
2.字符型(没有专用的字符型,但用byte表示单个字母,汉字需要三个)
3.布尔型(bool)
4.字符串(string)
不常用:复数 complex64,complex128 和 rune 这是 int32的别名表示一个unicode码点
派生/复杂数据类型
1.指针
2.数组
3.结构体
4.管道
5.函数
6.切片
7.接口
8.map

八、整数类型

有符号
int8 1字节 -128~127(相当于-2的7次幂) 0 0 0 0 0 0 0 0(一个字节占了8位,第一位为0表示正数为1表示负数,其余7个空位可用以乘方,二进制当全部都是0时候,会出现+0和-0,所以二进制将-0借过来用作表示数字所以负数比正数多一个而抹去了一个-0)
int16 2字节 -2的15次幂~2的15次幂-1 同理int16占16个位,第一位作为符号位,其余15位表示数字值
int32 4字节 -2的31次幂~2的31次幂-1 同理
int64 8字节 -2的63次幂~2的63次幂-1 同理
var i int8 = -128 可以运行但是
var i int8 = -129则会报错 127和128同样的效果

无符号的整数
uint8 1字节 0~255
uint16 2字节 0~2的16次幂-1
uint32 4字节 0~2的32次幂-1
uint64 8字节 0~2的64次幂-1
不需要首位表示符号
var i uint8 = 255
rune 等价 int32
byte(经常用来存字母) 等价 uint8

使用细节
1.golang整数类型分为有符号和无符号
2.golang整形默认声明类型为int
3.如何查看一个变量占用的字节大小和数据类型

var i uint8 = 255
fmt.Printf("i的数据类型是%T 占用的字节数为 %d", i, unsafe.Sizeof(i))

4.使用变量尽量在满足需求的情况下越小越好
5.bit计算机最小的储存单位,byte计算机中基本储存单元 1byte=8bit

九、浮点类型

浮点型/小数型
用于存放小数的
var price float32 = 89.88
fmt.Printf(“price的数据类型是%T 占用的字节数为 %d”, price, unsafe.Sizeof(price))
float32 4字节
float64 8字节
浮点数=符号位+指数位+尾数位
请注意:尾数位可能丢失造成精度损失,float64的精度要大于float32
1.float有固定的范围和字段长度不受os影响
2.浮点数默认声明为float64
3.通常有两种表现形式,十进制和科学计数法
4.通常情况下使用float64

//科学计数法
	price1 := 5.1234e2//	(相当于乘以10的平方 e代表10 后面的2代表平方 e的大小写不敏感)
	price2 := 5.1234 * 10 * 10
	price3 := 5.1234e2
	price4 := 5.1234e-2	//(相当于除以10的平方 e代表10 后面的2代表平方 e的大小写不敏感)
	price5 := 5.1234 / 10 / 10
	fmt.Println(price1 == price2)
	fmt.Println(price2 == price3)
	fmt.Println(price4 == price5)
//得出
	true
	true
	true

十、字符类型

golang没有专用的字符型
如果是单个字符用byte表示(对应 ASCII 码表)
字符串是由一个一个字符链接起来的字符序列,和java不同的是golang的字符串是由字节组成的而不是由字符组成的

c1 := 'a'
fmt.Printf("c1的值%c,c1占ASCII表的第位%d位", c1, c1)

说明:
1.我们保存的字符在ASCII表中的(0-1,a-z,A-Z)的可以保存到byte
2.如果我们保存的值大于255可以考虑使用int保存
3.如果我们需要按照字符输出需要格式化输出,fmt.Printf("%c")

var c1 int = '北'
fmt.Printf("c1的值%c,c1占ASCII表的第位%d位", c1, c1)
4.字符常量使用单引号括起来 ''
5.允许转义
6.字符的本质是一个整数,直接输出时是当前字符在UTF-8编码的码值
7.可以直接给某一个变量赋一个数字,然后输出时候格式化%c可以输出该数字对应的unicode字符
8.字符类型是可以进行运算的,相当于一个整数,因为他都有对应的unicode码

总结

好看的图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值