Golang

目录

一.前提补充

编译运行

2.语法要求和注意事项

转义字符

3.开发常见问题和解决办法

4.注释

5.规范的代码风格

6.API文档

二.基础语法

变量

2.常量

数据类型

2.1整数类型

2.2浮点类型

2.3字符类型

2.4布尔类型

2.5字符串类型

2.6数据类型细节

2.6.1基本数据默认值

2.6.2基本数据转换

2.6.3基本数据转str

2.6.4str转基本数据

3.标识符命名规范

4.运算符

4.1算术运算符

4.2关系运算符

4.3逻辑运算符

4.4赋值运算符

4.5运算符优先级

4.6其他运算符

5.流程控制

5.1顺序控制

5.2分支控制

5.2.1单分支

5.2.2双分支

5.2.3多分支

5.2.4嵌套分支

5.2.5switch分支

5.3循环控制

5.3.1for循环

5.3.2break语句

5.3.3continue语句

5.3.4return语句

三.函数

3.1函数语法

3.2函数调用机制

3.3函数递归

3.4函数注意事项和细节

3.5常见函数

3.5.1可变参数

3.5.2init函数

3.5.3匿名函数

3.5.4字符串函数

四.数组

4.1一维数组

4.1.1数组定义及内存布局

4.1.2数组4种初始化方式

4.1.3for...range遍历

4.1.4数组注意事项

4.2冒泡排序

4.3顺序查找

4.4二分查找

4.5二维数组

4.5.1二维数组的使用

4.5.2内存布局

4.5.3二维数组的遍历方式

五.切片

5.1切片基本介绍

5.2切片内存布局

5.3切片的使用方式

5.4切片使用的区别

5.5切片的遍历

5.6append()与copy()函数

5.6.1append()函数

5.6.2copy()函数

5.7切片注意事项

5.8string和slice

六.map

6.1map的介绍和声明

6.2map的3种用法

6.3map的crud操作

6.4map的遍历

6.5map切片

6.6map排序

6.7map使用细节

七.struct

7.1struct基本介绍

7.2struct的内存布局

7.3结构体声明

7.4结构体的创建

7.5结构体内存分配机制

7.6struct细节

八.方法

8.1方法的介绍和使用

8.2方法的调用和传参机制

8.3方法的详细使用

8.4方法和函数的区别

九.面向对象

9.1提前补充

9.1.1面向对象应用实例

9.1.2struct实例指定字段值

9.1.3工厂模式

9.2封装

9.3继承

9.3.1继承基本语法

9.3.2继承细节

9.3.3多重继承

9.4接口

9.4.1接口快速入门

9.4.2接口语法

9.4.3接口应用场景

9.4.4接口的注意事项

9.5接口与继承区别

9.6多态

9.7类型断言

十.项目

10.1家庭收支软件

10.1.1项目介绍

10.1.2项目开发流程

10.1.3软件需求和界面

10.1.4面向过程形式源码

10.1.5面向对象形式源码

10.2客户信息管理系统

10.2.1需求分析

10.2.2程序框架图

10.2.3主菜单和退出功能

10.2.4显示客户列表


一.前提补充

  1. 编译运行

Golang_第1张图片

go build中一个参数的情况

Golang_第2张图片

go build中两个参数的情况,其中第一个参数里包含main()入口,第二个参数不包含,

而是包含其他函数,其本质类似于c语言中的xx.h头文件

Golang_第3张图片

给 go build 指定了name

Golang_第4张图片

将最终的运行方式变成可执行程序的模式

go build+包的形式来运行代码

文件创建路径位置:/home/yulang/go/src/(程序的源码路径) --> /home/yulang/go/src/goinstall

一个文件夹(goinstall)里有一个文件(main.go)和一个文件夹(mypkg)。 一个文件夹(mypkg)里有一个文件(mypkg.go),示意图如下:

Golang_第5张图片

main.go代码如下: package main import ( "fmt" "goinstall/mypkg" ) func main() { mypkg.CustomPkgFunc() fmt.Println("hello world") } mypkg.go代码如下: package mypkg //建议当前包名和所在目录一致 import "fmt" func CustomPkgFunc() { fmt.Println("call CustomPkgFunc") } 执行以下命令将按包方式编译goinstall代码: $ go build -o main goinstall $ ls main main.go mypkg $ ./main call CustomPkgFunc hello world

go fmt xx.go格式化代码

2.语法要求和注意事项

Golang_第6张图片

  1. 转义字符

Golang_第7张图片

3.开发常见问题和解决办法

Golang_第8张图片

4.注释

Golang_第9张图片

5.规范的代码风格

Golang_第10张图片

6.API文档

Golang_第11张图片

二.基础语法

  1. 变量

补充:

1.程序:给机器执行的文件

2.源码:写好的给人看的代码

3.进程:正在执行的程序

Golang_第12张图片

Golang_第13张图片

Golang_第14张图片
Golang_第15张图片

全局变量

位于函数体外的变量,可作用于任何函数

当全局变量与局部变量同名时,系统会优

先考虑局部变量

Golang_第16张图片

匿名变量

忽略不需要的返回值

Golang_第17张图片

Golang_第18张图片

2.常量

常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、 字符串类型等

常量定义 通过const关键字,你可以给字面常量指定一个友好的名字: const PI float64 = 3.1415926

  1. 数据类型

Golang_第19张图片

2.1整数类型

Golang_第20张图片

Golang_第21张图片

Golang_第22张图片

Golang_第23张图片

Golang_第24张图片

2.2浮点类型

Golang_第25张图片

Golang_第26张图片

注:占位符(%c,%d等)与fmt.Println不能同时出现,当使用占位符后在双引号内换行(\n)

2.3字符类型

Golang_第27张图片

Golang_第28张图片

Golang_第29张图片

2.4布尔类型

Golang_第30张图片

2.5字符串类型

Golang_第31张图片

Golang_第32张图片

Golang_第33张图片

2.6数据类型细节

2.6.1基本数据默认值

Golang_第34张图片

2.6.2基本数据转换

Golang_第35张图片

Golang_第36张图片

Golang_第37张图片
Golang_第38张图片

2.6.3基本数据转str

Golang_第39张图片

Golang_第40张图片

2.6.4str转基本数据

Golang_第41张图片

Golang_第42张图片

Golang_第43张图片

3.标识符命名规范

Golang_第44张图片

Golang_第45张图片

Golang_第46张图片

Golang_第47张图片

4.运算符

4.1算术运算符

Golang_第48张图片

浮点数不相等的条件

Golang_第49张图片

Golang_第50张图片

Golang_第51张图片

注:在取模运算中,结果与被除数的符号有关

当被除数为正数,结果为正数

当被除数为负数,结果为负数

当除数与被除数都为负数时,结果也为负数

Golang_第52张图片

4.2关系运算符
Golang_第53张图片
Golang_第54张图片

4.3逻辑运算符

Golang_第55张图片

Golang_第56张图片
Golang_第57张图片

4.4赋值运算符
Golang_第58张图片

赋值运算符经典面试题

Golang_第59张图片

4.5运算符优先级

Golang_第60张图片

4.6其他运算符
Golang_第61张图片

5.流程控制

5.1顺序控制

Golang_第62张图片

5.2分支控制

5.2.1单分支
Golang_第63张图片

Golang_第64张图片

Golang_第65张图片

5.2.2双分支

Golang_第66张图片

Golang_第67张图片

Golang_第68张图片

Golang_第69张图片

Golang_第70张图片

5.2.3多分支

5.2.4嵌套分支

Golang_第71张图片

5.2.5switch分支

Golang_第72张图片

Golang_第73张图片

Golang_第74张图片

Golang_第75张图片

Golang_第76张图片

Golang_第77张图片

Golang_第78张图片

Golang_第79张图片

5.3循环控制

5.3.1for循环

Golang_第80张图片

Golang_第81张图片

Golang_第82张图片

Golang_第83张图片

Golang_第84张图片

Golang_第85张图片

Golang_第86张图片

5.3.2break语句

Golang_第87张图片

Golang_第88张图片

5.3.3continue语句

Golang_第89张图片

Golang_第90张图片

5.3.4return语句

Golang_第91张图片
Golang_第92张图片

三.函数

3.1函数语法

Golang_第93张图片

3.2函数调用机制

Golang_第94张图片

Golang_第95张图片

3.3函数递归

Golang_第96张图片

Golang_第97张图片

Golang_第98张图片

Golang_第99张图片

Golang_第100张图片

Golang_第101张图片

3.4函数注意事项和细节

Golang_第102张图片

Golang_第103张图片

Golang_第104张图片

3.5常见函数

3.5.1可变参数

Golang_第105张图片

Golang_第106张图片

3.5.2init函数

Golang_第107张图片

Golang_第108张图片

3.5.3匿名函数

Golang_第109张图片

最常用的方式

Golang_第110张图片

Golang_第111张图片

Golang_第112张图片

3.5.4字符串函数

Golang_第113张图片

Golang_第114张图片

Golang_第115张图片

Golang_第116张图片

Golang_第117张图片

Golang_第118张图片

3.5.5时间日期函数

Golang_第119张图片

四.数组

4.1一维数组

4.1.1数组定义及内存布局

Golang_第120张图片

Golang_第121张图片

Golang_第122张图片

Golang_第123张图片

Golang_第124张图片

4.1.2数组4种初始化方式

Golang_第125张图片

4.1.3for...range遍历

Golang_第126张图片

Golang_第127张图片

4.1.4数组注意事项

Golang_第128张图片

Golang_第129张图片

4.2冒泡排序

Golang_第130张图片

Golang_第131张图片
Golang_第132张图片

4.3顺序查找

Golang_第133张图片

Golang_第134张图片

4.4二分查找

Golang_第135张图片

Golang_第136张图片
Golang_第137张图片

4.5二维数组

4.5.1二维数组的使用

Golang_第138张图片

Golang_第139张图片

Golang_第140张图片

4.5.2内存布局

Golang_第141张图片

4.5.3二维数组的遍历方式

Golang_第142张图片

Golang_第143张图片

Golang_第144张图片

五.切片

5.1切片基本介绍

Golang_第145张图片

Golang_第146张图片

Golang_第147张图片

5.2切片内存布局

Golang_第148张图片

Golang_第149张图片

5.3切片的使用方式

Golang_第150张图片

Golang_第151张图片

Golang_第152张图片

5.4切片使用的区别

Golang_第153张图片

5.5切片的遍历

Golang_第154张图片

5.6append()与copy()函数

5.6.1append()函数

Golang_第155张图片

Golang_第156张图片

Golang_第157张图片

5.6.2copy()函数

Golang_第158张图片

Golang_第159张图片

Golang_第160张图片

5.7切片注意事项

Golang_第161张图片

5.8string和slice

Golang_第162张图片

Golang_第163张图片

Golang_第164张图片

Golang_第165张图片

六.map

6.1map的介绍和声明

Golang_第166张图片

Golang_第167张图片

Golang_第168张图片

Golang_第169张图片

Golang_第170张图片

6.2map的3种用法

Golang_第171张图片

6.3map的crud操作

Golang_第172张图片

Golang_第173张图片

Golang_第174张图片

Golang_第175张图片

6.4map的遍历

Golang_第176张图片

6.5map切片

Golang_第177张图片

Golang_第178张图片

6.6map排序

Golang_第179张图片

Golang_第180张图片

6.7map使用细节

Golang_第181张图片

Golang_第182张图片

Golang_第183张图片

七.struct

7.1struct基本介绍

Golang_第184张图片

Golang_第185张图片

7.2struct的内存布局

Golang_第186张图片

Golang_第187张图片

注意:

1.当声明结构体变量时,同时也开辟了内存空间

2.结构体变量是值类型

7.3结构体声明

Golang_第188张图片

Golang_第189张图片

Golang_第190张图片

Golang_第191张图片
Golang_第192张图片

7.4结构体的创建

Golang_第193张图片
Golang_第194张图片

Golang_第195张图片

Golang_第196张图片

7.5结构体内存分配机制

Golang_第197张图片
Golang_第198张图片

7.6struct细节

Golang_第199张图片

Golang_第200张图片

Golang_第201张图片

Golang_第202张图片

Golang_第203张图片

Golang_第204张图片

Golang_第205张图片

Golang_第206张图片

Golang_第207张图片

八.方法

8.1方法的介绍和使用

Golang_第208张图片

Golang_第209张图片

Golang_第210张图片

8.2方法的调用和传参机制

Golang_第211张图片
Golang_第212张图片

8.3方法的详细使用

Golang_第213张图片

Golang_第214张图片

Golang_第215张图片

Golang_第216张图片

Golang_第217张图片
Golang_第218张图片

8.4方法和函数的区别

Golang_第219张图片

Golang_第220张图片

九.面向对象

9.1提前补充

9.1.1面向对象应用实例

Golang_第221张图片

Golang_第222张图片
Golang_第223张图片

9.1.2struct实例指定字段值

Golang_第224张图片

Golang_第225张图片
Golang_第226张图片

9.1.3工厂模式

Golang_第227张图片

Golang_第228张图片

Golang_第229张图片

Golang_第230张图片

Golang_第231张图片

Golang_第232张图片

Golang_第233张图片

Golang_第234张图片

Golang_第235张图片

9.2封装

Golang_第236张图片

Golang_第237张图片

Golang_第238张图片

Golang_第239张图片

Golang_第240张图片

Golang_第241张图片

9.3继承

9.3.1继承基本语法

Golang_第242张图片

Golang_第243张图片

9.3.2继承细节

Golang_第244张图片

Golang_第245张图片

Golang_第246张图片

Golang_第247张图片

Golang_第248张图片

Golang_第249张图片

Golang_第250张图片

Golang_第251张图片

Golang_第252张图片

Golang_第253张图片

Golang_第254张图片

Golang_第255张图片

Golang_第256张图片

9.3.3多重继承

Golang_第257张图片

Golang_第258张图片

Golang_第259张图片

9.4接口

9.4.1接口快速入门

Golang_第260张图片

Golang_第261张图片

Golang_第262张图片

9.4.2接口语法

Golang_第263张图片

9.4.3接口应用场景

Golang_第264张图片

Golang_第265张图片

9.4.4接口的注意事项

Golang_第266张图片

Golang_第267张图片

Golang_第268张图片

Golang_第269张图片

Golang_第270张图片
Golang_第271张图片

Golang_第272张图片

9.5接口与继承区别

Golang_第273张图片

Golang_第274张图片

Golang_第275张图片

Golang_第276张图片

Golang_第277张图片

Golang_第278张图片

9.6多态

Golang_第279张图片

Golang_第280张图片

Golang_第281张图片

Golang_第282张图片

9.7类型断言

Golang_第283张图片

Golang_第284张图片

Golang_第285张图片

Golang_第286张图片

十.项目

10.1家庭收支软件

10.1.1项目介绍

Golang_第287张图片

Golang_第288张图片

10.1.2项目开发流程

Golang_第289张图片

10.1.3软件需求和界面

Golang_第290张图片

Golang_第291张图片

Golang_第292张图片

Golang_第293张图片

10.1.4面向过程形式源码

Golang_第294张图片
Golang_第295张图片
Golang_第296张图片
Golang_第297张图片

10.1.5面向对象形式源码

Golang_第298张图片

Golang_第299张图片

Golang_第300张图片

Golang_第301张图片

Golang_第302张图片

Golang_第303张图片

Golang_第304张图片
Golang_第305张图片

Golang_第306张图片

10.2客户信息管理系统

10.2.1需求分析

Golang_第307张图片

Golang_第308张图片

Golang_第309张图片

Golang_第310张图片

Golang_第311张图片

10.2.2程序框架图

Golang_第312张图片

Golang_第313张图片

10.2.3主菜单和退出功能

Golang_第314张图片

Golang_第315张图片

Golang_第316张图片

Golang_第317张图片

Golang_第318张图片
Golang_第319张图片

10.2.4显示客户列表

Golang_第320张图片

Golang_第321张图片

你可能感兴趣的:(Golang,golang,开发语言)