go课堂笔记20210913
作者:互联网
2021.9.13 go
woc 这台风tm大到雨伞都废了。。。
结构化设计
1.自顶向下的分析方法
2.模块化设计
3.结构化编码(顺序、选择、循环)
OO
OO = 算法 + 抽象数据类型
程序 = (对象、消息、对象、消息…)
封装(数据隐藏)、继承和重用、多态
Go
兼具python等动态语句的开发速度和c/c++等编译语言的性能和安全性
Google在07年开发的一种开源语言
java由于OO框架->八股设计
Go背景
当前编程语言对多核并发支持不好
程序规模大,编译速度慢
为OO而OO
少即是多,Go语言只有25个关键字
Go完成了单机单核的C语言到互联网时代多核环境的通用编程语言的蜕变
GO特性
静态编译型,不同再下载库
少即是多
强调组合,OOP,而不是继承
duck模型的非侵入式接口:java申明接口只是未来可能要用的(臃肿),Go不显式申明接口
原生支持并发编程
支持多OS和体系结构的交叉编译
大量使用内置函数和接口提高复用
支持和C语言相互调用的机制(CGO)
Go编码类型
命令源码文件
库源码文件(阅读学习)
测试源码文件
helloworld
main包表示特殊包名,表示不是库
import “fmt”:format格式化输出
由于是静态编译,所以.exe远大于.go
build生成其他平台可执行程序
编写测试
xxx_test.go,与被测试同一个包
以Test开头,只有一个参数
got,want进行比较,用errorf判断, 相等显示为pass。。。
修改代码后进行回归测试
开发环境
ide、git、curl
VS Code
微软,跨平台,开源,低资源占用,免费编辑
特性:大多数开发语言,排版,定义,调式(断点、监视),执行。。
使用Go mod代理安装Go 插件(否则要翻墙)
Git
管理linux内核版本控制的分布式版本控制系统
开发者可以在本机拷贝一个完整的Git创建本地分支,进行本地提交并最终合并master
Github是面向开源以及私有软件项目的托管平台,只支持Git版本库格式,求职简历的重要内容(维护自己的开源软件)
Gitee:面向中国的独立开放源代码托管平台
curl
command line for transferring with urls
Go语言语法
编译器词法分析将src分割为若干个token:关键字,标识符,分隔符,字面量
关键字(25)
包:import package
实体申明:chan const func interface map struct type var
流程控制:break case continue default defer else fallthrough for go…
标识符
预申明:bool,int, make, new, panic(函数), true, iota(计数器), nil, _(空白标识符)
用户自定义:不能以数字开头、不含@$%等符号、大小写敏感
部分首字母大小写有特殊含义(外部可用性)
字面量
固定值:基本类型、复合类型
通常放在表达式右边或函数参数
变量
代表某块内存区域,名字,类型,值,存储(堆or栈),生存期(创建和回收),可见性(作用域)
分开两个步骤:声明+赋值
堆&栈
堆来自于OS提供的一个空间,new的时候调一块空间(有借有还,再借不难),不同程序共享的
Q:内存占很大且不释放?
A:先生成一个很大空间运行程序
栈是函数里面的一个空间,加载一个函数,大小通常比较固定的,压到main函数之上
变量申明:
var identifier dataType
分配空间,初始化为该类型的0值,不能多次申明同名变量,子可以遮盖父
变量在函数中申明了未使用也会出现编译错误(全局OK)
var(
e bool
f stirng
)
fmt.printf("a address: %v value: %v \n", &a, a)
变量赋值
强类型,确认类型
静态语言,支持编译时自动推断类型
申明赋值同时进行可忽略类型
可用函数内部 := 短类型申明
var a int = 1 //True
var b = 2 //True
a, b = 1, 2 // inside func True
c := true // inside func True
总结:
1.goland配置一下无限使用周期
2.跑一下go课本上的样例
标签:OO,var,20210913,申明,类型,go,Go,课堂 来源: https://blog.csdn.net/weixin_40986490/article/details/120264973