GO
文章平均质量分 59
GO相关文章
鬼鸮
月薪1800每天笑哈哈
展开
-
GO读文件
go读文件这里给出四种方式方案一:ioutil.ReadFile本质上调用的是os.ReadFile方法f1, err1 := ioutil.ReadFile("output1.txt")if err1 != nil { fmt.Println("read fail", err1)}fmt.Println(string(f1))方案二:(f *File) Read此方案调用的是File结构体实现的Read方法f2, err := os.Open("output2.txt")if原创 2021-10-29 12:30:04 · 894 阅读 · 0 评论 -
GO写入文件
go写入文件有4种写法……但是在开始之前,我先提供一个判断文件是否存在,存在则打开不存在则创建的封装,相信你会用到的// OpenFile 判断文件是否存在 存在则OpenFile 不存在则Createfunc OpenFile(filename string) (*os.File, error) { if _, err := os.Stat(filename); os.IsNotExist(err) { fmt.Println("文件不存在") return os.Create(file原创 2021-10-20 09:13:29 · 7192 阅读 · 0 评论 -
使用goland进行go源码调试【go是如何判断结构体实现了interface的
本文中调试的go源码为1.14.12版本,本文介绍的调试方法与go版本没有关系我们在go的学习过程中,有可能会需要对go的源码进行调试但是我们直接跑程序的话,是没法实现源码调试的所以这里来介绍一下go源码的调试方法使用goland进行调试,能够有比较清楚的图形化界面,这有助于我们在调试过程中对一些相关参数的查看,也能让调试变简单,所以我们使用goland进行调试编写你的程序想要进行源码调试首先肯定得有你自己的代码,你自己的代码在运行的过程中会调用到你要调试的那部分源码我这里用判断结原创 2021-06-05 21:52:50 · 1810 阅读 · 1 评论 -
这!就是单向链表【go实现
链表就如环环相扣的锁链搬将各个节点的数据连接在一起每个数据节点除了存储节点值以外,还存储了下一个节点的地址指针,从而可以通过本节点寻找下一个节点,哪怕下一个节点的实际存储位置与本节点不连续,也不太会影响寻址效率。故一般我们用链表来组织碎片化的空间。链表的插入和删除并不会影响到其他大部分的节点,只涉及到目标节点前后的节点操作,所以效率极高为O(1)缺点就是查询效率较低,要在链表中查询某个节点必须按顺序遍历链表来查询,时间复杂度为O(n)下面是单链表的示意图下面上单链表的实现代码packa原创 2021-05-29 16:06:29 · 253 阅读 · 0 评论 -
这!就是二叉树【go实现
名词解释结点:树的基本数据结构,包含数据和指向子结点的指针子树:子结点的同义词结点的度:一个节点拥有子树的个数称为结点的度树的度:树中所有结点的度的最大值叶子结点:没有子树的结点/度为0的结点分支结点:有子树的结点/度不为0的结点,也称非叶子节点节点的层次:从根节点开始,根节点层次为1,根节点的子节点层次为2,以此类推,某节点层次为n,则他的子节点层次为n+1树的深度:树深,又称树的高度,树中所有结点的层次的最大值即为树的深度二叉树每个节点存储一个数据,同时存储一个左子树地址和一个右子原创 2021-05-29 16:05:41 · 173 阅读 · 0 评论 -
GO GC
从内存说起我们知道程序运行时使用的常量变量其实都是存储在内存中的,所谓垃圾回收也就是将程序占用了,但现在已经不再使用的内存空间进行回收。那内存中都存储了些什么东西呢代码区:存储给cpu运行时读取用的我们编译好的代码数据区:存储全局变量我们的程序在运行的时候,与我们接触更多的是堆区和栈区,大家都知道我们在程序中声明的变量会分配到这两个区域中对于go程序来说,我们一般不需要关心一个变量到底被go分配到了堆区还是栈区,但这里姑且还是提一下go的分配原则是否有在其他地方(非局部)被引用。只要有可能被原创 2021-04-23 16:20:47 · 391 阅读 · 1 评论 -
Redis操作简述
原创 2021-03-29 20:21:46 · 75 阅读 · 1 评论 -
Mysql处理负值时间戳
今天在业务层面遇到一个问题,我们以往如果在mysql中有个字段的格式是datetime,我们需要这个字段做筛选项的话,会这么写if startTime != 0 { db = db.Where("unix_timestamp(created_at) >= ?", startTime)}if endTime != 0 { db = db.Where("unix_timestamp(created_at) <= ?", endTime)}可以看到我们其实是将数据库中的该字段从date原创 2021-03-29 20:06:33 · 1415 阅读 · 0 评论 -
有趣的GO写法
//计算带中文字符串的长度,会正确计算中文字符的长度utf8.RuneCountInString(字符串变量名)//遍历字符串并转为rune格式【unicode】数组,可以正确遍历中文字符串bytes := []byte(字符串变量名)for len(bytes) > 0 { ch, size := utf8.DecodeRune(bytes) bytes = bytes[size:] fmt.Printf("%c", ch)}//也可以这么做,更简单直接/此操原创 2021-03-29 16:51:13 · 411 阅读 · 0 评论 -
channel十点技巧
channel存在3种状态:nil,未初始化的状态,只进行了声明,或者手动赋值为nilactive,正常的channel,可读或者可写closed,已关闭,千万不要误认为关闭channel后,channel的值是nil当需要不断从channel读取数据时,使用for range,当channel关闭时,for循环会自动退出,无需主动监测channel是否关闭for x := range ch{ fmt.Println(x)}读channel,但不确定ch..原创 2021-03-29 16:49:14 · 3052 阅读 · 0 评论 -
Go-Redis使用手册
实现大体上的实现思路是声明了一个用来执行redis命令的cmdable结构体,调用该结构体的process方法就可以执行传入的语句type cmdable struct { process func(cmd Cmder) error}需要传入的cmd是一个Cmder格式的值type Cmder interface { Name() string Args() []interface{} stringArg(int) string readReply(rd *proto.Reader)原创 2021-03-28 19:07:46 · 2013 阅读 · 0 评论 -
gRPC简介
gRPC(Remote Procedure Calls)概述GRPC是一个高性能、通用的开源RPC框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发,支持众多的开发语言。gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。gRPC使用protocol buffers作为接口描述语言(IDL)以及底层的信息交换格式优点基于原创 2021-03-28 19:01:20 · 451 阅读 · 0 评论 -
求两个字符串的最长公共子串
两个字符串分别为"abccade"和"dgcadde"输出结果为cad滑动比对解法输入字符串1和2字符串1固定,字符串2滑动两层for循环,外层控制字符串2的滑动,内层控制滑动后重叠部分字符串的比对思路就是这样,具体的实现可以直接看代码package mainimport ( "bytes" "fmt")func getMaxSubStr2(str1, str2 string) string { len1 := len(str1) len2 := len(str2) var原创 2021-03-28 13:25:25 · 1376 阅读 · 0 评论 -
go切片探索
突发奇想开始研究切片func main() { var list = []int{1, 2, 3} add(list) fmt.Println(list) //[1 2 3] addp(&list) fmt.Println(list) //[1 2 3 5]}func add(list []int) { list = append(list, 4) fmt.Printf("--%v\n", list) //--[1 2 3 4]}func addp(list *原创 2021-03-26 09:52:04 · 69 阅读 · 0 评论 -
项目迁往go mod
首先升级go语言版本至1.13以上,配置好相关常量go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,directlinux系统下进入目标项目目录,执行go mod init能够自动生成一个空的go.mod文件,说他是空的是因为此时该文件中不会标记任何包依赖然后执行go mod tidy此指令会自动检索项目中使用的依赖,自动下载能够下载的那些依赖包,并记录在go.mod以及go.sum中指令执行完毕可以查看go.m原创 2021-03-26 09:49:16 · 427 阅读 · 0 评论