type
status
date
slug
summary
tags
category
icon
password
Property
Nov 2, 2022 06:13 AM
Go5期day01课上笔记
课程物料
预习URL
课上笔记
markdown格式的笔记+截图
视频
课后自己拷或者等百度网盘连接
课后作业
回去之后自己注册路飞学城账号,把自己的用户名、真实姓名告诉班主任
每周作业要求都在路飞学城上会有展示,每周五12:00之前把作业打包提交到路飞学城。
Go语言开发环境搭建
安装Go开发包
下载
安装目录一定选一个好记的。
安装完成后,输入
go version
查看go版本号。配置GOPATH
详细步骤:
- 在自己的电脑上新建一个目录
D:\\go
(存放我编写的Go语言代码)
- 在环境变量里,新建一项:
GOPATH:D:\\go
- 在
D:\\go
下新建三个文件夹,分别是:bin
、src
、pkg
- 把
D:\\go\\bin
这个目录添加到PATH
这个环境变量的后面 - Win7是英文的
;
分隔 - Win10是单独一行
- 你电脑上
GOPATH
应该是有默认值的,通常是%USERPROFILE%/go
, 你把这一项删掉,自己按照上面的步骤新建一个就可以了。
GO语言项目结构
下载并安装VS Code
下载VSCODE
安装
“下一步安装法”
安装中文插件包
安装Go扩展
VSCode界面介绍
编译go build
使用
go build
- 在项目目录下执行
go build
- 在其他路径下执行
go build
, 需要在后面加上项目的路径(项目路径从GOPATH/src后开始写起,编译之后的可执行文件就保存在当前目录下)
go build -o hello.exe
go run
像执行脚本文件一样执行Go代码
go install
go install
分为两步:交叉编译
Go支持跨平台编译
例如:在windows平台编译一个能在linux平台执行的可执行文件
执行
go build
Mac平台交叉编译:
Go语言文件的基本结构
变量和常量
变量
Go语言中的变量必须先声明再使用
声明变量
var s1 string
:声明一个保存字符串类型数据的s1变量注意事项
变量名推荐使用驼峰式
变量必须先声明再使用
变量声明且赋值后必须使用
基本数据类型
整型
浮点型
复数
布尔值
字符串
Go语言中字符串是用双引号包裹的!!!
Go语言中单引号包裹的是字符!!!
byte和rune
流程控制
if判断
for循环
作业
- 常量声明及练习题回去自己写一下,特别是iota定义数量级时(1024)
- 编写代码分别定义一个整型、浮点型、布尔型、字符串型变量,使用
fmt.Printf()
搭配%T
分别打印出上述变量的值和类型。
- 编写代码统计出字符串
"hello沙河小王子"
中汉字的数量。(自己查资料)
day02 课上笔记
【免费学习go语言资料www.5lmh.com】
内容回顾
GO安装
$GOPATH
: 你写Go代码的工作区,保存你的Go代码的。go env
GOPATH/bin
添加到环境变量:go install
命名会把生成的二进制可执行文件拷贝到GOPATH/bin
Go 命令
go build
:编译Go程序go build -o "xx.exe"
:编译成xx.exe文件go run main.go
: 像执行脚本一样执行main.go文件go install
: 先编译后拷贝GO语言文件基础语法
存放Go源代码的文件后缀名是
.go
文件第一行:
package
关键字声明包名如果要编译可执行文件,必须要有main包和main函数(入口函数)
Go语言函数外的语句必须以关键字开
函数内部定义的变量必须使用
变量
3种声明方式:
var name1 string
var name2 = "沙河娜扎"
- 函数内部专属:
name3:="沙河小王子"
匿名变量(哑元变量):
当有些数据必须用变量接收但是又不使用它时,就可以用
_
来接收这个值。常量
const PI = 3.1415926
const UserNotExistErr = 10000
iota:实现枚举
两个要点:
iota
在const关键字出现时将被重置为0
- const中每新增一行常量声明,iota累加1
流程控制
if
for循环
标准for循环
基本数据类型
整型
无符号整型:
uint8
、uint16
、uint32
、uint64
带符号整型:
int8
、int16
、int32
、int64
uint
和int
:具体是32位还是64位看操作系统uintptr
:表示指针其他进制数
Go语言中没办法直接定义二进制数
浮点型
float64
和float32
Go语言中浮点数默认是
float64
复数
complex128
和complex64
布尔值
true
和false
不能和其他的类型做转换
字符串
常用方法
字符串不能修改
byte和rune类型
都属于类型别名
字符串、字符、字节 都是什么?
字符串:双引号包裹的是字符串
字符:单引号包裹的是字符,单个字母、单个符号、单个文字
字节:1byte=8bit
go语言中字符串都是UTF8编码,UTF8编码中一个常用汉字一般占用3个字节。
今日内容
流程控制
运算符
详见课上代码
04/main.go
复合数据类型
数组
数组的声明
数组的初始化
数组的遍历
二维数组
数组是值类型
切片(slice)
切片指向了一个底层的数组。
切片的长度就是它元素的个数。
切片的容量是底层数组从切片的第一个元素到最后一个元素的数量。
切片的定义
切片的初始化
切片的长度和容量
make
make()函数用于创建指定长度和容量的切片。
切片的本质
切片就是一个框,框住了一块连续的内存。
切片属于引用类型,真正的数据都是保存在底层数组里的。
判断一个切片是否是空的,要是用
len(s) == 0
来判断append
copy
指针
Go语言中不存在指针操作,只需要记住两个符号:
&
:取地址
:根据地址取值
make和new的区别
- make和new都是用来申请内存的
- new很少用,一般用来给基本数据类型申请内存,
string
、int
,返回的是对应类型的指针(\*string、\*int)。
- make是用来给
slice
、map
、chan
申请内存的,make函数返回的的是对应的这三个类型本身
map
map也是引用类型,必须初始化之后才能使用。
函数
匿名函数和闭包
作业
- 把运算符的所有例子自己写一下(详见课上代码
04op/main.go
)
- 写一个程序,统计一个字符串中每个单词出现的次数。比如:”how do you do”中how=1 do=2 you=1。
- 把函数部分7、8个示例自己签一遍。
- 路飞上的作业
day03课上笔记
【免费学习go语言资料www.5lmh.com】
如果什么都很容易,那还叫什么选择。
走上坡路肯定是会累的。
内容回顾
运算符
算术运算符
+-*/
逻辑运算符
&&
||
!
位运算符
>>
<<
|
^
&
赋值运算符
=
+=
。。。++
和--
是独立的语句,不属于赋值运算符比较运算符
<
<=
!=
。。。数组(Array)
var ages [30]int
var names [30]string
var nums [40]int
数组包含元素的类型和元素的个数。元素的个数(数组的长度)属于数组类型的一部分。
数组是值类型。
切片
切片的定义
切片不存值,它就像一个框,去底层数组框值。
切片:指针、长度、容量
切片的扩容策略:
append函数
指针
只需要记住两个符号:
&
和*
map
map存储的是键值对的数据。
也是需要申请内存的。
今日内容
函数
函数的定义
基本格式
参数的格式
有参数的函数
参数类型简写
可变参数
返回值的格式
有返回值
多返回值
命名返回值
变量作用域
- 全局作用域
- 函数作用域
- 先在函数内部找变量,找不到往外层找
- 函数内部的变量,外部是访问不到的
- 代码块作用域
高阶函数
函数也是一种类型,它可以作为参数,也可以作为返回值。
匿名函数
没有名字的函数。
多用在函数内部定义函数时使用。
闭包
defer
defer延迟调用,会把defer后面的语句延迟调用
把当时的状态都保存
defer多用于释放资源
多个defer存在时,按照先进后出的方式去执行。
内置函数
panic和recover
今天的难点
- 函数的定义
- 高阶函数
- 函数类型
- 闭包
- defer
- panic/revocer
本周作业
- 分金币作业