
编程语言
文章平均质量分 73
sgsgy5
一起来交流,在程序猿的道路上一直走到底
展开
-
go语言中的面向对象,接口类型,工厂设计模式解读
工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类 抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类 个人觉得这个区别在于产品,如果产品单一,最合适用工厂模式,但是如果有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。再通俗深化理解下:工厂模式针对的是一个产品等级结构 ,抽象工厂模式针对的是面向多个产品...原创 2018-08-10 18:51:08 · 469 阅读 · 2 评论 -
go语言并发讲解,虚拟内存的讲解
并行和并发今天我们来讲一下在计算机编程中并行和并发的意思 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。 并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,通过cpu时间片轮转使多个进程快速交替的执行。 如果...原创 2018-08-24 20:08:56 · 1376 阅读 · 0 评论 -
go的几种死锁情况分析
在go语言中用channel通信稍不注意就会发生死锁情况,下面我们来看一下几种常见的死锁情况第一种:同一个goroutine中,使用同一个 channel 读写。package mainfunc main(){ ch:=make(chan int) //这就是在main程里面发生的死锁情况 ch<-6 // 这里会发生一直阻塞的情况,执行不到下面一句 ...原创 2018-08-27 20:30:17 · 5855 阅读 · 4 评论 -
go语言中的内存逃逸和C语言对比
我们首先来稍微了解一下内存,在c/c++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束...原创 2018-08-23 10:51:55 · 1297 阅读 · 0 评论 -
go语言切片深入讲解
我们在上一篇的切片讲解中,我们讲解到在go语言中 map和切片都是传引用(地址),也就是在调用函数的时候都是可以直接修改变量的值,关于切片,在某种程度上表面上来说也是可以这样说的,我们先来看一下一个小小的例题package mainimport "fmt"func Change(s []int){ s[0]=11 s[1]=22}func main(){ s...原创 2018-08-22 19:53:16 · 677 阅读 · 0 评论 -
C语言简单五子棋实现
今天我们来看一下用C语言简单实现五子棋的实现,这里面只实现了普通功能,如果有需求可以在这个基础上面完善一下奥。我们先来看一下代码#include<stdio.h>#include<windows.h>#include<conio.h>#include<stdlib.h&a原创 2018-08-16 19:46:31 · 21256 阅读 · 5 评论 -
go语言之陷阱for range
在go语言中,性药遍历有两种方法,一种就是for的普通方法,还有一种就是for range的遍历,但是在使用for range时,如果使用不当,就会出现一些问题比如我们下面先来看一个例题package mainimport "fmt"type Student struct{ Name string Age int} //一个学生结构体...原创 2018-08-18 20:34:19 · 4570 阅读 · 1 评论 -
go语言中的错误捕获recover和panic异常
在Go语言中我们首先来看一下err错误信息,我们先来看一段代码package mainimport ( "fmt" "errors")func calc(a int, b int) (v int, err error) { //捕获错误信息 if b == 0 { //如果代码中出现错误 可以使用errors.New()创建错误信息 ...原创 2018-08-13 19:27:37 · 4991 阅读 · 0 评论 -
go语言求第M到第N个素数
今天我们来做一个例题,这是个什么例题呢,就是让用户输入两个数,M,N然后打印出第M个素数到第N个素数,M import "fmt"//判断一个数是不是素数func IsPrime(a int)(result bool){ result=true for i:=2;i<a;i++{ if(a%i==0){ resul原创 2018-08-15 21:22:16 · 535 阅读 · 0 评论 -
go语言贪食蛇与C语言的区别
利用go语言写贪食蛇游戏那么就会利用面向对象的思想来写一下,创造蛇身体对象,然后写出来,/go语言写的时候我们需要调用一个c语言写的一个包/,go语言可以直接调用调用c语言的函数,很方便简洁,我们先来看一下我自己写的C语言的一个包package Clib/*#include <windows.h>#include <conio.h>//原创 2018-08-12 12:58:09 · 1531 阅读 · 0 评论 -
C语言贪食蛇
我们先来看一下C语言的贪食蛇代码,相对于面向对象的的语言,C语言是一门面向过程的语言,C语言写出来的代码都是顺着平常的思路来一步一步实现的,我们先来看C语言的代码#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<原创 2018-08-12 12:41:17 · 649 阅读 · 2 评论 -
go语言中切片当作函数传递
传递分为值传递和地址传递,go语言中切片和map是地址传递,但是切片传递要有一个注意事项 例如:package mainfunc test(a []int){ a=append(a,1,2,3)}func main(){ var s []int=[]int{89,4,5,6} test(s) fmt.Println(s)}在这里里面为什么调用函...原创 2018-08-11 19:45:42 · 4728 阅读 · 2 评论 -
go语言的冒泡排序和插入排序
编程即数学,在编程中也会遇到很多的数学问题的集合,今天我们来讲解一下编程中最常见的冒泡排序,以及冒泡排序之后的插入排序 1:冒泡排序,见名知意,冒泡在我们生活当中可以有哪些常见的事物呢,比如在生活当中,大家都见到过烧开水的状态,那么水中的气泡就会不断的往上面漂浮,应用物理学上的知识来讲就是气泡的质量比较轻,在水中有浮力,就会不断的上浮,那么我们应该怎样应用到编程中的冒泡排序呢,我们先来看一...原创 2018-08-11 13:08:48 · 334 阅读 · 0 评论 -
go之无缓冲channel(通道)和有缓冲channel(通道)
channel我们先来看一下通道的解释: channel是Go语言中的一个核心类型,可以把它看成管道。并发核心单元通过它就可以发送或者接收数据进行通讯,这在一定程度上又进一步降低了编程的难度。 channel是一个数据类型,主要用来解决go程的同步问题以及协程之间数据共享(数据传递)的问题。 goroutine运行在相同的地址空间,因此访问共享内存必须做好同步。goroutine...原创 2018-08-25 20:22:11 · 15968 阅读 · 5 评论