深入学习golang第一篇:数组与切片。这是 Go 中经常使用的数据类型。之前有晨读过相关的文章,如果对这两种数据结构很熟悉,可以快速浏览下。本文从声明、和C语言的对比到遍历使用等方面学习array/slice。 我要晨读
特殊的国情,我们要学会“翻墙”。“翻墙”的方法有很多,你是否有想过自己实现一个代理,即使自己不实现,了解代理的原理和实现方式对自身知识的提升还是很有帮助的。本文介绍了 goproxy 代理实现涉及到的一些知识和原理。 我要晨读
一门编程语言,只是学习,没有实际的产品实践,一方面很容易忘记,另一方面感受也不会太深。实际产品中,难免会遇到这样那样的问题,随着问题的解决,相信水平也会有不小的提升,这时候对语言的感受也会不一样。本文作者分享了 用Go语言做产品半年的一些感觉。 我要晨读
字符串操作是很常见的。Go语言对字符串在语言级和库级提供了很好的支持。在Web开发中,我们经常会遇到字符串截断显示的问题。这样的问题有很多种解决方法,可以css在客户端截断;也可以在后端截断。本文使用 Go 截断字符串。 我要晨读
随着不断学习,知识掌握越来越多,同时也会比较散,有必要阶段性的进行总结。本文对 Go 语言方法进行了总结,包括:哪些类型可以有方法、结构体的匿名字段的类型限制、结构体匿名字段的方法向外传递的规则 等。 我要晨读
大家比较认同 Go 是云计算的最佳语言之一;同时也认为 Go 非常适合游戏服务端开发。手游服务端开发,涉及到socket编程,可能有长连接,也可能有http短链接,当然应该还需要操作数据库。本文探讨了作者手游框架设计时的两种方案。 我要晨读
现在的程序,大部分或多或少都会涉及网络编程。学习 Go 语言,更应该掌握网络编程。Go 语言提供了 net 包,封装了 socket 相关的接口。可能你用过 net 包,但没有完整的学习过它。可以通过本文,完整的学习学习 net 包。 我要晨读
Go 语言的 net/http 除了实现 HTTP 协议,还是支持 HTTPS,搭建一个 HTTP 服务很简单,同样的,搭建一个 HTTPS 服务也不难。本文提供了一个 Go支持 HTTPS 的简单例子,建议自己动手试试。 我要晨读
共享内存是靠操作系统提供的内存映射机制,让不同进程的一块地址空间映射到同一个虚拟内存区域上,使不同的进程可以操作到一块共用的内存块。本文对 mmap 函数进行了较详细的介绍,同时使用 cgo 封装了 mmap,提供 go 语言对共享内存读写的代码。 我要晨读
个人觉得 Go 中的 defer 是一个好东西。然而,有些时候,因为使用 defer,导致一些“莫名其妙”的问题。本文通过三段代码引出对 defer 原理的讲解。在看 defer 原理前,你试着看看这三段代码你是否都知道答案,而且不是蒙的。 我要晨读
每门编程语言都会有一些地方容易出错,大部分时候可能想当然的是这样,然而实际结果并不是这样。对这种情况,大家习惯称之为“坑“。Go语言有哪些你认为是”坑“的呢?本文作者汇总了一些”坑“的集合。欢迎补充。 我要晨读
函数在go中是一等公民。函数使用的方方面面,你是否都了解?本文从函数声明、参数(变参、使用)、匿名函数和闭包、defer、函数作为值、函数作为类型、panic和recover、main和init函数,到 内置的函数,对函数进行了全面的介绍、学习。 我要晨读
golang定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struct来实现。了解golang的数据类型和数据结构的底层实现,将有助于我们更好的理解golang并写出质量更好的代码。 我要晨读
sync.Pool 是 Go1.3 增加的内容,虽然 Go1.4 都快要发布了,但了解增加 sync.Pool 类型的一些情况还是有用处的。一方面可以加深理解;另一方面可以了解当初设计的初衷或一些思路。golang sync.Pool试用说明及注意事项。 我要晨读
依赖注入(Dependency Injection)和控制反转(Inversion of Control)。熟悉 Java 的 Spring 框架的人应该知道这两个概念。在依赖注入模式中,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由注入器来完成,然后注入调用者,因此也称为依赖注入。Go 的第三方库:inject,实现了依赖注入。 我要晨读
golang的unsafe包很强大,基本上很少会去用它。它可以像C一样去操作内存。unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁。uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它和unsafe.Pointer可相互转换。本文讲解如何 利用unsafe操作未导出变量。 我要晨读
类型转换在程序设计中都是不可避免的问题。当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关注这方面的问题。但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编译器不会代你去做这个事。 我要晨读
进程、线程、协程,这些概念你是否都了解?那么 goroutine 又是什么?虽然这些都是偏向概念性的知识,但真正掌握理解才能写出更好的程序。了解这些知识,相信对理解Go语言也会很有帮助。本文讨论 进程、线程、轻量级进程、协程和go中的Goroutine 那些事儿。 我要晨读