-
golang数据结构之双链表
所属栏目:[大数据] 日期:2020-12-16 热度:89
目录结构: ? ?doubleLink.go package linkimport ( " fmt " ) // HerosNode 链表节点 type HerosNode struct { ID int Name string pre *HerosNode 指针 next *HerosNode 指针 } InsertHerosNode 插入 func InsertHerosNode(head *HerosNode,newHerosNode *[详细]
-
golang数据结构之快速排序
所属栏目:[大数据] 日期:2020-12-16 热度:155
具体过程:黑色标记代表左指针,红色标记代表右指针,蓝色标记代表中间值。(依次从左往向下) ? // QuickSort 快速排序 func QuickSort(left int ,right 7 ] int ) { l : = left r : = right pivot : = arr[(left+right)/ 2 ] tmp : = 0 for l r { for arr[[详细]
-
golang数据结构之递归解决迷宫问题
所属栏目:[大数据] 日期:2020-12-16 热度:172
简单来说:递归就是函数/方法自己调用自己,只是每次传入不同的变量。 递归可以解决各种数学问题:n皇后问题、阶乘问题、汉诺塔、迷宫问题、球和篮子问题等等; maze.go package mazeimport ( " fmt " )func SetWay(myMap *[ 8 ][ 7 ] int ,i int ) bool { /[详细]
-
golang数据结构之单链表
所属栏目:[大数据] 日期:2020-12-16 热度:186
实现单链表的增删查改。 目录如下: singleLink.go package linkimport ( " fmt " ) // HeroNode 链表节点 type HeroNode struct { ID int Name string next *HeroNode 指针 } InsertHeroNode 插入 func InsertHeroNode(head *HeroNode,newHeroNode * HeroNo[详细]
-
golang数据结构之利用栈求计算表达式(加减乘除)
所属栏目:[大数据] 日期:2020-12-16 热度:182
例如:3+2*6-2 先定义两个栈,一个为数值栈,一个为运算符栈; stack.go package stackimport ( " errors " fmt " )type Stack struct { MaxTop int // 栈最大可以存放的数量 Top 栈顶 Arr [ 20 ] int 模拟栈 }func (s *Stack) Push(val int ) (err error) {[详细]
-
golang数据结构之总结
所属栏目:[大数据] 日期:2020-12-16 热度:166
golang语言的一些数据结构实现,包括: 队列 (单队列、循环队列) 链表 (单链表、双链表、循环链表(解决约瑟夫环问题)) 栈 (实现加减乘除计算) 递归之迷宫问题 哈希表 (员工管理系统) 树 (三种遍历方式) 排序 (冒泡、选择、插入、快速排序) 稀[详细]
-
golang数据结构之栈
所属栏目:[大数据] 日期:2020-12-16 热度:105
stack.go package stackimport ( " errors " fmt " )type Stack struct { MaxTop int // 栈最大可以存放的数量 Top 栈顶 arr [ 5 ] int 模拟栈 }func (s *Stack) Push(val int ) (err error) { 先判断栈是否满了 if s.Top == s.MaxTop- 1 { fmt.Println( 栈[详细]
-
golang数据结构之稀疏数组
所属栏目:[大数据] 日期:2020-12-16 热度:114
掌握知识: 数组的初始化和赋值 结构体的初始化和赋值 字符串和整型之间的转换以及其它的一些操作 类型断言 读取文件 写入文件 对稀疏数组进行压缩 package mainimport ( " bufio " fmt io os strconv strings " // "strconv" )func originArr() [ 11 ][ 11[详细]
-
golang之引用自己定义的包
所属栏目:[大数据] 日期:2020-12-16 热度:69
初始目录如下: 其中main.go只有一个主函数main(),用于运行程序,array文件夹是自己定义的包,里面spArr.go位于package array。 spArr中的函数名或变量首字母得大写。 进入到array目录,在终端输入go install,在与src同级目录下会有一个pkg文件夹,里面会[详细]
-
golang数据结构之插入排序
所属栏目:[大数据] 日期:2020-12-16 热度:77
// InsertSort 插入排序 func InsertSort(arr *[ 7 ] int ) { for i := 1 ; i len(arr); i++ { insertVal : = (* arr)[i] inserIndex : = i - 1 for inserIndex = 0 (*arr)[inserIndex] insertVal { ( *arr)[inserIndex+ 1 ] = (* arr)[inserIndex] inserInd[详细]
-
golang数据结构之队列
所属栏目:[大数据] 日期:2020-12-16 热度:80
队列可以用数组或链表实现,遵从先入先出。 目录结构: 在main中调用queue包中的属性和方法,如何调用参考另一篇文章:?https://www.cnblogs.com/xiximayou/p/12005480.html 一个队列需要有四要素: 容量、队首指针、队尾指针、存储数据的数组 ; 当队尾指针[详细]
-
golang数据结构之循环链表
所属栏目:[大数据] 日期:2020-12-16 热度:102
循环链表还是挺有难度的: 向链表中插入第一条数据的时候如何进行初始化。 删除循环链表中的数据时要考虑多种情况。 详情在代码中一一说明。 目录结构如下: circleLink.go package linkimport ( " fmt " )type CatNode struct { ID int Name string next *[详细]
-
golang实战--客户信息管理系统
所属栏目:[大数据] 日期:2020-12-16 热度:67
总计架构图: ? model/customer.go package modelimport ( " fmt " )type Customer struct { Id int Name string Gender Age Phone Email }func NewCustomer(id int ,name string ,gender ) Customer { return Customer{ Id: id,Name: name,Gender: gender,A[详细]
-
(四十五)golang--反射
所属栏目:[大数据] 日期:2020-12-16 热度:75
反射基本介绍: (1)反射可以在运行时动态获取变量的各种信息,比如变量的类型、类别; (2)如果是结构体变量,还可以获取结构体本身的信息(包括结构体字段、方法); (3)通过反射,可以修改变量的值,可以调用关联的方法; (4)使用反射,需要Import[详细]
-
(四十三)golang--管道
所属栏目:[大数据] 日期:2020-12-16 热度:158
假设我们现在有这么一个需求: 计算1-200之间各个数的阶乘,并将每个结果保存在map中,最终显示出来,要求使用goroutine。 分析: (1)使用goroutine完成,效率高,但是会出现并发/并行安全问题; (2)不同协程之间如何通信; 对于(1):不同协程之间可能[详细]
-
(三十六)golang--文件的基本操作
所属栏目:[大数据] 日期:2020-12-16 热度:59
文件程序中是以流的形式操作的。 流:数据在数据源(文件)和程序(内存)之间经历的路径; 输入流:数据从数据源到程序的路径; 输出流:数据从程序到数据源的路径; 常用的文件操作和函数: 1.常用的文件操作函数和方法(打开和关闭文件) 2.读取文件中的[详细]
-
(四十四)golang--协程(goroutine)和管道(channel)相结合实例
所属栏目:[大数据] 日期:2020-12-16 热度:90
统计1-8000之间的素数。 整体框架: ? 说明:有五个协程,三个管道。其中一个协程用于写入数字到intChan管道中,另外四个用于取出intChan管道中的数字并判断是否是素数,然后将素数写入到primeChan管道中,最后如果后面四个协程哪一个工作完了,就写入一个tr[详细]
-
(三十五)golang--面向对象之多态
所属栏目:[大数据] 日期:2020-12-16 热度:82
多态:变量具有多种形态,可以用统一的接口来调用不同的实现。 接口体现多态特征: (1)多态参数:之前所讲的Usb接口案例,既可以接受手机变量,也可以接受相机变量,就体现了usb接口的多态; (2)多态数组: package main import ( " fmt " )type usb int[详细]
-
golang实战--家庭收支记账软件(面向过程)
所属栏目:[大数据] 日期:2020-12-16 热度:189
1.开发流程 ? ? 2.目标 模拟实现一个基于文本界面的(家庭记账软件) ; 初步掌握编程技巧和调试技巧; 主要包含以下知识点:局部变量和基本数据类型、循环语句、分支语句、简单屏幕格式输出、面向对象编程; 该软件能够记录家庭的输入、支出,并能够打印家[详细]
-
golang实战--家庭收支记账软件(面向对象)
所属栏目:[大数据] 日期:2020-12-16 热度:67
首先是具体的目录结构: 其中myAccount.go中调用utils包中的函数;utils.go实现记账软件的一些相应的功能; myAccount.go package mainimport ( " fmt " go_code/project_5/utils " )func main() { fmt.Println( 这个是面向对象的方法完成的 ) utils.NewFami[详细]
-
(三十九)golang--反序列化
所属栏目:[大数据] 日期:2020-12-16 热度:144
反序列化:是指将json字符串反序列化成原来的数据类型。 import ( " encoding/json " fmt " )type monster struct { Name string `json: name ` Age int `json: age ` Birthday birthday ` Sal float64 `json: sal ` Skill skill `}func unmarshalStruct() {[详细]
-
golang--海量用户即时通讯系统
所属栏目:[大数据] 日期:2020-12-16 热度:131
功能需求: 用户注册 用户登录 显示在线用户列表 群聊 点对点聊天 离线留言[详细]
-
(四十六)golang--网络编程(简易的聊天系统)
所属栏目:[大数据] 日期:2020-12-16 热度:148
Go主要的目标之一就是面向大规模后端服务程序,网络通信这块是服务端程序必不可少也是至关键的一部分。 网络编程有两种: (1)TCP Socket编程:是网络编程的主流,之所以叫TCP Socket编程,是因为底层是基于TCP/IP协议的; (2)B/S结构的http编程,使用浏[详细]
-
(三十八)golang--json(对切片、map、结构体进行序列化)
所属栏目:[大数据] 日期:2020-12-16 热度:150
JSON(javascript object notation)是一种 轻量级的数据交换格式 ,易于人阅读和编写,同时也易于机器解析和生成。key-val JSON是在2001年开始推广的数据格式,目前已成为主流的数据格式。 JSON易于机器解析和生成,并有效地提升网络传输效率。通常程序在网[详细]
-
golang--单元测试综合实例
所属栏目:[大数据] 日期:2020-12-16 热度:95
实例说明: (1)一个Monster结构体,字段Name,Age,Skill (2)Monster有一个Store方法,可以将一个Monster对象序列化后保存在文件中; (3)Monster有一个ReStore方法,可以从文件中读取数据并且反序列化; (4)编译测试用例文件store_test.go,填写测试用[详细]
