Go教程笔记备份
2022-10-8
| 2022-11-2
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
Nov 2, 2022 06:13 AM

Go5期day01课上笔记

课程物料

预习URL

课上笔记

markdown格式的笔记+截图

视频

课后自己拷或者等百度网盘连接

课后作业

回去之后自己注册路飞学城账号,把自己的用户名、真实姓名告诉班主任
每周作业要求都在路飞学城上会有展示,每周五12:00之前把作业打包提交到路飞学城。

Go语言开发环境搭建

安装Go开发包

下载

安装目录一定选一个好记的。
notion image
安装完成后,输入go version查看go版本号。

配置GOPATH

详细步骤:
  1. 在自己的电脑上新建一个目录D:\\go(存放我编写的Go语言代码)
  1. 在环境变量里,新建一项:GOPATH:D:\\go
  1. D:\\go下新建三个文件夹,分别是:binsrcpkg
  1. D:\\go\\bin这个目录添加到PATH这个环境变量的后面
    1. Win7是英文的;分隔
    2. Win10是单独一行
  1. 你电脑上GOPATH应该是有默认值的,通常是%USERPROFILE%/go, 你把这一项删掉,自己按照上面的步骤新建一个就可以了。

GO语言项目结构

下载并安装VS Code

下载VSCODE

安装

“下一步安装法”

安装中文插件包

安装Go扩展

VSCode界面介绍

notion image

编译go build

使用go build
  1. 在项目目录下执行go build
  1. 在其他路径下执行go build, 需要在后面加上项目的路径(项目路径从GOPATH/src后开始写起,编译之后的可执行文件就保存在当前目录下)
  1. 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循环

作业

  1. 常量声明及练习题回去自己写一下,特别是iota定义数量级时(1024)
  1. 编写代码分别定义一个整型、浮点型、布尔型、字符串型变量,使用fmt.Printf()搭配%T分别打印出上述变量的值和类型。
  1. 编写代码统计出字符串"hello沙河小王子"中汉字的数量。(自己查资料)
 

day02 课上笔记

免费学习go语言资料www.5lmh.com

内容回顾

GO安装

$GOPATH: 你写Go代码的工作区,保存你的Go代码的。
go env
notion image
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种声明方式:
  1. var name1 string
  1. var name2 = "沙河娜扎"
  1. 函数内部专属:name3:="沙河小王子"
匿名变量(哑元变量):
当有些数据必须用变量接收但是又不使用它时,就可以用_来接收这个值。

常量

const PI = 3.1415926
const UserNotExistErr = 10000
iota:实现枚举
两个要点:
  1. iota在const关键字出现时将被重置为0
  1. const中每新增一行常量声明,iota累加1

流程控制

if

for循环

标准for循环

基本数据类型

整型

无符号整型:uint8uint16uint32uint64
带符号整型:int8int16int32int64
uintint:具体是32位还是64位看操作系统
uintptr:表示指针

其他进制数

Go语言中没办法直接定义二进制数

浮点型

float64float32
Go语言中浮点数默认是float64

复数

complex128complex64

布尔值

truefalse
不能和其他的类型做转换

字符串

常用方法
字符串不能修改

byte和rune类型

都属于类型别名

字符串、字符、字节 都是什么?

字符串:双引号包裹的是字符串
字符:单引号包裹的是字符,单个字母、单个符号、单个文字
字节:1byte=8bit
go语言中字符串都是UTF8编码,UTF8编码中一个常用汉字一般占用3个字节。

今日内容

流程控制

运算符

详见课上代码04/main.go

复合数据类型

数组

数组的声明

数组的初始化

数组的遍历

二维数组

数组是值类型

切片(slice)

切片指向了一个底层的数组。
切片的长度就是它元素的个数。
切片的容量是底层数组从切片的第一个元素到最后一个元素的数量。

切片的定义

切片的初始化

切片的长度和容量

make

make()函数用于创建指定长度和容量的切片。

切片的本质

切片就是一个框,框住了一块连续的内存。
切片属于引用类型,真正的数据都是保存在底层数组里的。
判断一个切片是否是空的,要是用len(s) == 0来判断

append

copy

指针

Go语言中不存在指针操作,只需要记住两个符号:
  1. &:取地址
  1. :根据地址取值

make和new的区别

  1. make和new都是用来申请内存的
  1. new很少用,一般用来给基本数据类型申请内存,stringint,返回的是对应类型的指针(\*string、\*int)。
  1. make是用来给slicemapchan申请内存的,make函数返回的的是对应的这三个类型本身

map

map也是引用类型,必须初始化之后才能使用。

函数

匿名函数和闭包

作业

  1. 把运算符的所有例子自己写一下(详见课上代码 04op/main.go
  1. 写一个程序,统计一个字符串中每个单词出现的次数。比如:”how do you do”中how=1 do=2 you=1。
  1. 把函数部分7、8个示例自己签一遍。
  1. 路飞上的作业
 

day03课上笔记

免费学习go语言资料www.5lmh.com

如果什么都很容易,那还叫什么选择。
走上坡路肯定是会累的。

内容回顾

运算符

算术运算符

+-*/

逻辑运算符

&& || !

位运算符

>> << | ^ &

赋值运算符

= += 。。。
++-- 是独立的语句,不属于赋值运算符

比较运算符

< <= != 。。。

数组(Array)

var ages [30]int
var names [30]string
var nums [40]int
数组包含元素的类型和元素的个数。元素的个数(数组的长度)属于数组类型的一部分。
数组是值类型。

切片

切片的定义
切片不存值,它就像一个框,去底层数组框值。
切片:指针、长度、容量
切片的扩容策略:
append函数

指针

只需要记住两个符号:&*

map

map存储的是键值对的数据。
也是需要申请内存的。

今日内容

函数

函数的定义

基本格式

参数的格式

有参数的函数
参数类型简写
可变参数

返回值的格式

有返回值
多返回值
命名返回值

变量作用域

  1. 全局作用域
  1. 函数作用域
    1. 先在函数内部找变量,找不到往外层找
    2. 函数内部的变量,外部是访问不到的
  1. 代码块作用域

高阶函数

函数也是一种类型,它可以作为参数,也可以作为返回值。

匿名函数

没有名字的函数。
多用在函数内部定义函数时使用。

闭包

notion image

defer

defer延迟调用,会把defer后面的语句延迟调用
把当时的状态都保存
defer多用于释放资源
多个defer存在时,按照先进后出的方式去执行。

内置函数

notion image

panic和recover

今天的难点

  1. 函数的定义
  1. 高阶函数
  1. 函数类型
  1. 闭包
  1. defer
  1. panic/revocer

本周作业

  1. 分金币作业
    1. 预习结构体https://www.liwenzhou.com/posts/Go/10_struct/
  2. 开发
  3. maven wapperJava小抄
    Loading...
    目录