- 博客(31)
- 收藏
- 关注
原创 golang学习笔记--泛型编程
/ 支持 uint8 、int32 、 float64 与 int64及其衍生类型// ~ 标识支持类型的衍生类型// | 表示取并集// 多行之间取交集// MyInt64 为int64的衍生类型,具有基础类型int64的新类型,与int64是不同类型// MyInt32 为 int32 的别名,与 int32 是同一类型fmt.Println("自定义泛型,数字比较:", GetMaxCusNum(a, b))
2023-05-16 19:41:16 646
原创 golang学习笔记--反射
1、编写一个Cal 结构体,有 两个字段 Num1,和Num2。4、使用反射机制完成对GetSub 的调用,输出形式为。2、方法 GetSub(name string)"tom 完成了减法运行,8 -3 = 5"3、使用反射遍历Cal结构体所有的字段信息。
2023-05-15 15:48:47 85
原创 golang学习笔记--管道 channel
/定义一个管道只能存入int类型的数据//管道必须make才能使用fmt.Printf("intChan 的值是%v,地址是%p", intChan, &intChan)可以看出管道是引用类型,他的值是内存中真正的管道的地址。
2023-05-12 17:28:11 447
原创 golang学习笔记--协程 Goroutine
1、Go主线程(有程序员直接称为线程/也可以理解成进程): 一个Go线程上,可以起多个协程,你可以这样理解,协程是轻量级的线程。2.从微观的角度看,在一个时间点上,就是多个任务在同时执行.2.从微观的角度看,在一个时间点上,其实只有一个任务在执行。2.3、空间调度由用户控制。2.4、协程是轻量级的线程。2.1、有独立的栈空间。1.多个任务作用在一个cpu。1.多个任务作用在多个cpu。3.这样看来,并行的速度快。可以并行执行代码程序。
2023-05-12 15:58:47 133
原创 golang学习笔记--MPG模型
G(Goroutine):协程,有自己的栈。一个P下面可以有多个G。P(Processor):协程执行需要的资源(上下文context),可以看作一个局部的调度器,使go代码在一个线程上跑,他是实现从N:1到N:M映射的关键。2、M1,M2,M3正在执行一个G,M1的协程队列有三个,M2的协程队列有3个,M3协程队列有2个。1、当前程序有三个M,如果三个M都在一个cpu运行,就是并发,如果在不同的cpu运行就是并行。3、从上图可以看到: Go的协程是轻量级的线程,是逻辑态的,Go可以容易的起上万个协程。
2023-05-12 15:33:26 311
原创 golang学习笔记--单元测试
创建 _test.go 结尾的文件写测试用例。通过testing包可以轻松的进行单元测试。该命令执行当前包所有的测试函数。
2023-05-10 16:53:11 81
原创 golang学习笔记--文件操作
在go中要操作文件需要使用包//打开文件的常量,可以使用 | 拼接使用多个const (O_RDONLY// 只读模式打开文件O_WRONLY// 只写模式打开文件O_RDWR// 读写模式打开文件O_APPEND// 写操作时将数据附加到文件尾部O_CREATE// 如果不存在将创建一个新文件O_EXCL// 和O_CREATE配合使用,文件必须不存在O_SYNC// 打开文件用于同步I/OO_TRUNC// 如果可能,打开时清空文件。
2023-05-06 15:21:42 550
原创 golang学习笔记--类型断言
将一个float32类型的 f 变量交给 空接口类型的 i 是可以的。并且 i 的数据类型也变成了 float32。在进行类型断言时,如果类型不匹配,就会报 pamic,因此进行类型断言时,要确保原来的空接口指向的就是断言的类型。我们直接断言 i 就是 float32 类型,如果真的是 float32 就会正常赋值,如果不是则会报错。但是又定义了一个float32类型的 f2 并将 i 赋值给 f2 时却会报错。如何在进行断言时,带上检测机制,如果成功就 ok, 失败也不要报 panic?
2023-04-25 16:37:54 330
原创 golang学习笔记--使用sort包对切片排序
查看go语言标准库文档,使用sort.Sort()可以对结构体切片进行排序。参数是一个接口,该接口里声明了 len() Less() Swap() 三个方法,所以我们要排序的结构体需要依次实现这三个方法。切片是引用类型,所以不需要其他变量接收返回值。
2023-04-25 14:37:55 256
原创 golang学习笔记--接口 interface
只要一个变量含有接口类型中的所有方法,那么这个变量就实现了这个接口。3、在 Golang 中,一个自定义类型如果将某个接口的所有方法都实现,我们说这个自定义类型实现了该接口。9、空接口 interface() 没有任何方法,所以所有类型都实现了空接口,即我们可以把。1、接口里的所有方法都没有方法体,即接口的方法都是没有实现的方法。接口体现了程序设计的。别的接口(比如B,C接口),这时如果要实现A接口,也必须将B,C接口的方法也全部实现。2、接口中所有的方法都没有方法体,即都是没有实现的方法。
2023-04-24 17:33:15 326
原创 golang学习笔记--面向对象三大特性
把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。就是的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为这里写了一个staff的包来实现封装的特性, 里面定义了一个staff的结构体,其中Name是公开的,id和sal是私有的,只能通过GetXxx和SetXxx方法访问和修改调用staff包。
2023-04-23 18:00:24 294
原创 golang学习笔记--工厂模式
在项目中有时会定义一个小写的结构体,如下定义了一个学生的结构体,首字母小写代表private。这时其他包是不能调用该结构体获取。定义一个 GetStudent函数,传入结构体所需的参数,返回student结构体的指针。其中age属性也是小写的,也不能直接访问,定义一个GetAge 方法,返回age字段。
2023-04-23 13:59:05 61
原创 laradock中安装laravels的宿主机5200端口不能访问
随后打开laradock的env文件在里面添加 WORKSPACE_LARAVELS_PORT=5200。配置laravel文件中env文件添加 LARAVELS_LISTEN_IP=0.0.0.0。并在如下位置添加 "${WORKSPACE_LARAVELS_PORT}:5200"正常安装好laravels后并启动,但是在本地访问5200端口确仍然不能访问。确认5200端口是否做了主机端口映射。
2023-04-20 19:00:00 296
原创 记一次laradock安装swoole扩展时出现的错误
报错:load metadata for docker.io/laradock/workspace:latest-7.4:运行docker-compose build php-fpm workspace时。后面再出现上述报错就继续docker pull对应的镜像。laradock 的.env文件下面修改以下两个参数。
2023-04-20 16:06:53 233
原创 golang学习笔记--方法
2、test 方法只能通过 Person 类型的变量来调用,而不能直接调用,也不能使用其它类型变量来调。3、因为结构体是值类型,所以方法中修改的值不会影响到main中的person1。1、test 方法和 Person 类型绑定。
2023-04-16 18:39:48 102
原创 golang学习笔记--结构体 struct
2、结构体变量(实例)是具体的,实际的,代表一个具体变量。2、结构体变量的地址是指向结构体中第一个元素的地址。1、结构体是自定义的数据类型,代表一类事物。通过下面代码可以看出。
2023-04-15 22:53:59 171
原创 golang创建一个数组循环存放26个英文字母
使用byte类型,获取A对应的ASCII数字65,然后循环加1获得26个字母对应的ASCII数值,再用%c输出还原该数字对应的ACSii码字符,就得到A-Z。字符数据运算 'A' + 1 = 'B'。
2023-04-12 18:11:38 397
原创 golang学习笔记--日期函数
要使用日期相关的函数需要引入time包,Now()函数会返回当前本地时间,返回的是一个time.Time类型的结构体,里面内置了很多方法可以使用。Millisecond = 1000 * Microsecond //毫秒。Second = 1000 * Millisecond //秒。Microsecond = 1000 * Nanosecond //微妙。1970年1月1日 0点0分0秒。
2023-04-12 16:56:02 1418
原创 golang学习笔记--函数
每个包都可以定义一个init函数,init函数会在包中第一个自动执行,可以在其中写一些初始化的逻辑处理。当引入的包中也含有init函数时,会优先执行引入的包中的init函数,引入多个包时,执行顺序为从上到下的引入顺序。
2023-04-10 23:01:19 117
原创 golang学习笔记--包
一个目录下只能有一个包名,这里建议和目录名保持一致,函数名首字母必须大写才能被其他包使用。1、首先找到自己的代码存放目录,并复制路径,注意这里是复制src所在的目录路径,因为当引入包的时候系统会自动从设置的环境变量路径的src目录下开始寻找。要使用其他包下函数时,需要先引入包的路径,从src目录下开始寻找 ,这里我的路径为 gocode/project02/dbuntils。4、变量名 GOPATH ,值为代码存放的目录,填好后点击确定就设置完毕了。是因为在一个目录下的两个文件的包名不一样导致的。
2023-04-03 14:59:51 166
原创 golang学习笔记--变量和数据类型
如下代码可以自定义数据类型,就是复制int32类型取名为myInt类型,类似取别名。但是要注意,虽然它复制了int32 ,但并不能和原本的类型互相赋值。
2023-03-29 18:03:57 531
原创 golang学习笔记--第一段代码
在该文件下输入如下代码,这里注意函数 Println 的大小写,如果写错运行时将会报错。执行该命令后可以看到当前所在目录下多了一个 test.exe文件,这个就是编译后的文件。直接运行这个文件,可以看到正常运行了之前写的代码并输出了 Hello Golang。在终端输入go build命令,该命令是将代码源文件进行编译。在vscode中打开该目录,并创建一个test.go的文件。当然在开发中也可以直接使用go run命令来运行代码。在源文件test.go所在的目录下打开终端。
2023-03-29 15:26:04 81
原创 golang笔记--开发环境搭建
Go (又称 Golang) 是 Google 的 Robert Griesemer, Rob Pike 及 Ken Thompson 开发的一种计算机编程语言语言。vscode的相关配置修改
2023-03-29 14:58:53 196 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人