随笔分类 - Go语言基础
摘要:0. 前言 slice 是一种基于数组实现的轻量级数据结构,在slice.go中定义如下: type slice struct { array unsafe.Pointer len int cap int } 从定义中可以看到,slice是一种结构体类型,里面有3个元素。array是数组指针,它指向
阅读全文
摘要:在Go的官网文档How to Write Go Code中,已经介绍了Go的项目目录一般包含以下几个: src 包含项目的源代码文件; pkg 包含编译后生成的包/库文件; bin 包含编译后生成的可执行文件。 一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需
阅读全文
摘要:转载: https://segmentfault.com/a/1190000020522261 https://blog.csdn.net/guyan0319/article/details/101783164 另外,如果使用Goland进行开发,需要设置如下:(可能老版本的Goland不支持,下最
阅读全文
摘要:https://stackoverflow.com/questions/26065525/it is an empty value struct nil?rq=1
阅读全文
摘要:go语言math包里面定义了min/max函数,但只有float64类型的,而并没有整数类型的min/max。 为什么? 因为go不支持 重载 ,因此它只能定义一个min/max函数。于是官方就只实现了最为复杂的浮点型数值的比较,像int这种简单的,就要我们自己实现了。 详细的请参考 "这篇文章"
阅读全文
摘要:场景 某些函数调用频繁,但其计算却非常耗时,为了避免每次调用时都重新计算一遍,我们需要保存函数的计算结果,这样在对函数进行调用的时候,只需要计算一次,之后的调用可以直接从缓存中返回计算结果。 使用下面的 作为我们需要缓存的函数样例。 要求 缓存的设计要求是 并发安全 的,并且要尽量高效。 版本1:使
阅读全文
摘要:1. Go语言中的值类型和引用类型 值类型:int,float,bool,string,struct和数组 (数组要特别注意,别搞混了) 变量直接存储值,分配栈区的内存空间,这些变量所占据的空间在函数被调用完后会自动释放。 引用类型:slice,map,chan和值类型对应的指针 变量存储的是一个地
阅读全文
摘要:今天在学习Go的基础数据结构——slice,期间阅读了slice的内部实现,扩容策略等。然后想到,我们在调用append()函数进行追加元素是究竟发生了什么?于是就想看看append()函数的内部实现,结果源码里并没有找到,搜索一番,还是在StackOverflow上找到了答案。记录如下。 Q:Wh
阅读全文
摘要:在包目录内,所有以_test.go为后缀名的源文件在执行go build时不会被构建成包的一部分,它们是go test测试的一部分。 在*_test.go文件中,有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数。一个测试函数是以Test为函数名前缀的函数,用于测试程序的一些逻
阅读全文
摘要:1. 什么是interface在此之前,我们遇到的都是具体的类型,比如数字类型、切片类型等等。对于这些具体的类型,我们总是能知道它是什么、可以利用它来做什么,比如对于一个数字类型,我们知道可以对其进行算数操作;对于一个切片类型,我们知道可以取下标操作等等。但是,接口类型是一种抽象的类型,我们并不能知
阅读全文
摘要:gob包("encoding/gob")管理gob流——在encoder(编码器,也就是发送器)和decoder(解码器,也就是接受器)之间交换的字节流数据(gob 就是 go binary的缩写)。一般用于传递远端程序调用(RPC)的参数和结果。 要使用gob,通过调用NewEncoder()方法
阅读全文

浙公网安备 33010602011771号