golang 结构体

构造函数,可以使用普通方法来构建 值接受者和指针接收者 1、要改变内容必须使用指针接收者 2、结构过大也要考虑使用指针接收者 3、一致性;如有指针接收者,最好都是指针接收者 值接收者是go语言特有 值/指针接收者均可接收值/指针 nil指针也可以调用方法(.) 封装 对包而言的 每个目录只能一个包,main包包含程序入口 为结构定义的方法必须放在同一个包内,可以在不同文件内阅读全文

简书 2020-06-08 01:33:14 我真是刚的不像话

duck typing

像鸭子走路,像鸭子叫,那么就是鸭子 描述事物外部行为而非内部结构 严格说go属于结构化类型系统,类似duck typing python c++ 中duck typing (只要retriever 具有get方法即可)但是编译运行才知道错误 def download(retriever r): r.get("www.baidu.com") java 中传入参数必须要实现某个接口,不是duck typing 接口定义 download (使用者) retriever(使用者) golang中接口由...阅读全文

简书 2020-06-08 01:33:14 我真是刚的不像话

Windows 安装 Gin(go框架)

本文主要讲述一下 Windows 下安装 Gin 框架以及遇到的一些坑。安装前请先确保已安装配置好 go的语言环境。官方安装地址如下(请先往下看):Gin中文文档1.添加两个环境变量,否则 go get 命令会很慢,请参考如下网站:GoProxy 中国先设置一下代理,添加两个环境变量,如下: GO111MODULE=on GOPROXY=https://goproxy.cn,direct 添加环境变量 2.配置 Goland,本人使用的开发工具是 Goland,以下配置均以 Goland 开发工...阅读全文

简书 2020-06-08 01:33:13 半夏_91f5

带你学够浪:Go语言基础系列 - 8分钟学复合类型

文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握。基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Golang 这趟新车。 Hurry up , Let's go ! 前面我们学习过 Golang 中基础数据类型,比如内置类型 int string bool...阅读全文

简书 2020-06-08 01:33:10 柠檬橙1024

为什么容器内存占用居高不下,频频 OOM

最近我在回顾思考(写 PPT),整理了现状,发现了这个问题存在多时,经过一番波折,最终确定了元凶和相对可行的解决方案,因此也在这里分享一下排查历程。 时间线: 在上 Kubernetes 的前半年,只是用 Kubernetes,开发没有权限,业务服务极少,忙着写新业务,风平浪静。 在上 Kubernetes 的后半年,业务服务较少,偶尔会阶段性被运维唤醒,问之 “为什么你们的服务内存占用这么高,赶紧查”。此时大家还在为新业务冲刺,猜测也许是业务代码问题,但没有调整代码去尝试解决。 在上 Kube...阅读全文

掘金 2020年06月07日 煎鱼eddycjy

go 闭包函数&执行生命周期

package main import "fmt" func main() { /* 函数式编程: 支持将函数作为另一个函数的参数, 叫回调函数 支持将函数作为另一个函数的返回值 一个函数有内层函数,该内层函数中,还会操作外层函数的局部变量,(外层函数中定义,外层函数的参数)并且该外层函数的返回值就是这个内层函数 该内层函数和局部变量,统称闭包结构, closure 闭包函数不会随执行结束而自动销毁 */ res := increment() fmt.Println(res) //fmt.Pri...阅读全文

Segmentfault 2020-06-08 15:32:36 小兵

聊一聊高并发高可用那些事 - Kafka篇

目录 为什么需要消息队列 1.异步 :一个下单流程,你需要扣积分,扣优惠卷,发短信等,有些耗时又不需要立即处理的事,可以丢到队列里异步处理。 2.削峰 :按平常的流量,服务器刚好可以正常负载。偶尔推出一个优惠活动时,请求量极速上升。由于服务器 Redis,MySQL 承受能力不一样,如果请求全部接收,服务器负载不了会导致宕机。加机器嘛,需要去调整配置,活动结束后用不到了,即麻烦又浪费。这时可以将请求放到队列里,按照服务器的能力去消费。 3.解耦 :一个订单流程,需要扣积分,优惠券,发短信等调用多...阅读全文

Segmentfault 2020-06-08 13:32:37 伟洪winnie

go 回调函数

package main import "fmt" // go 回调函数 func main() { /* 高阶函数: 根据go语言函数的数据类型的特点,可以将函数作为另一个函数的参数 fun1() fun2() 将fun1函数作为fun2函数的参数: fun2函数:高阶函数 接受一个函数作为参数的参数,叫做高阶函数 fun1函数:回调函数 作为另一个函数的参数的函数,叫回调函数 */ fmt.Printf("%T\n", add) //func(int, int) int fmt.Printf...阅读全文

Segmentfault 2020-06-08 13:32:36 小兵

golang常用库:gorilla/mux,http路由库使用

一:golang自带路由介绍 golang自带路由库 http.ServerMux ,实际上是一个 map[string]Handler,是请求的url路径和该url路径对于的一个处理函数的映射关系。这个实现比较简单,有一些缺点: 不支持参数设定,例如/user/:uid 这种泛型类型匹配 无法很友好的支持REST模式,无法限制访问方法(POST,GET等) 也不支持正则 二:gorilla/mux路由 github地址:github.com/gorilla/mux www.gorillatoo...阅读全文

掘金 2020年06月07日 九卷

Go语言的Channel

什么是Channel Channel 是 Go 中为 goroutine 提供的一种通信机制,channel 是有类型的,而且是有方向的,可以把 channel 类比成 unix 中的 pipe。 channel的使用 channel创建 channel 字面意义是 “通道”,类似于 Linux 中的管道。声明 channel 的语法如下: chan T // 可以接收和发送类型为 T 的数据 chan<- float64 // 只可以用来发送 float64 类型的数据 <-chan int ...阅读全文

掘金 2020年06月07日 隔壁小王_

29. Go 语言中的 select 用法

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 前面写过两节关于 switch-case 的文章,分别是: 流程控制:switch-case ...阅读全文

掘金 2020年06月07日 王一白

29. Go 语言中的 select 用法

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 前面写过两节关于 switch-case 的文章,分别是: 流程控制:switch...阅读全文

Segmentfault 2020-06-08 13:32:35 Python编程时光

每日算法-排序-冒泡排序

冒泡排序的特点是调整相邻两个对象的位置,每进行一次内循环就可以将最大值调整到最后。时间复杂度是O(n^2) package main import "fmt" func popsort(a []int) []int{ for i:=0;i<len(a)-1;i++{ for j:=0;j<len(a)-1;j++{ if a[j]>a[j+1]{ a[j],a[j+1]=a[j+1],a[j] } } } return a } func main(){ a := []int{8,5,2,9,3,...阅读全文

Segmentfault 2020-06-08 13:32:35 肥桥墩

九卷读书:淘宝从小到大的发展 -重读《淘宝技术这十年》

一:前言 《淘宝技术这十年》 --子柳著,北京.电子工业出版社。 我又把这本书重新读了一遍。 为什么重读? 因为以前读的时候,囫囵吞枣,只是看看而已,看过了就过了,了无痕,一点思考也没有留下。 虽然作者自称一个“比较低阶”的人员,但是也可以从一个角度看看淘宝是怎么从一个小网站发展到当今世界最大的电子商务平台。 这本书书名说的是技术,但是内容绝不止于技术。 淘宝,现今这个世界最大的电子商务平台, 当初它是从哪里开始起步的? 最初网站有哪些功能? 它又是怎么一步一步发展起来的? 在当时的强敌易趣,e...阅读全文

掘金 2020年06月06日 九卷

Golang——结构体struct

Go语言中没有“类”的改变,不支持类的“继承”等面向对象概念。Go语言中通过结构体的内嵌再配合接口比面向对象更具有更高的扩展性和灵活性。 自定义类型和类型别名 自定义类型:新类型,可以基于内置的基本类型定义,也可以通过stuct定义; 类型别名:只存在代码编写过程中,编码编译字后就不存在,增加提高代码可读性;例如,byte是unit8的类型别名,rune是int32的类型别名。 //自定义类型 // NewInt 是一个新类型,具有int的特性 type NewInt int //类型别名 ty...阅读全文

简书 2020-06-06 18:32:46 Cici冬雪

gencodec工具

gencodec 百度了一下,居然找不到gencodec工具的中文使用介绍,对我这种拿来主义的人真有点不适应,简单总结一下介绍使用。 gencodec是一个非常便捷的通过类型自动生成marshaling代码的工具,工具的安装就不细说了,基本没有使用其他库除了golang.org/x里某些库,地址:https://github.com/fjl/gencodec。 使用方式: gencodec -type MyType -field-override MyTypeMarshaling -format...阅读全文

简书 2020-06-06 18:32:43 渐行渐远_简行