go中方法的接收者是值或者指针有什么区别吗?

参考文章:http://studygolang.com/articles/1113 希望解决的问题如下 假设有两个方法,一个方法的接收者是指针类型,一个方法的接收者是值类型,那么: 对于值类型的变量和指针类型的变量,这两个方法有什么区别? 如果这两个方法是为了实现一个接口,那么这两个方法都可以调用吗? 如果方法是嵌入到其他结构体中的,那么上面两种情况又是怎样的? 值类型的变量和指针类型的变量 先声明一个结构体: type T struct { Name string } func (t T) M...阅读全文

2015-04-30 17:20 u013790019
阅读:7702 评论:2

Go语言核心——slice切片

Slice是长度可变的元素序列(数组不可变),每个元素都有相同的类型。slice类型写作[]T,其中T代表slice中的元素类型;slice和数组写法很像,只是没有指定长度。 数组和slice之间的联系非常紧密。slice是非常轻量的数据结构,它是引用类型,指向底层的一个数组,该数组被称之为slice的底层数组,slice可以访问底层数组的某个子序列,也可以访问整个数组。一个slice由三个部分组成:指针、长度、容量,指针指向了slice中第一个元素对应的底层数组元素的地址,因为slice未必是...阅读全文

2016-03-23 13:58 zealifree005
阅读:1353 评论:0

两个随机数函数的故事

我经常有一些困惑,`crypto/rand` 包和 `math/rand` 包是如何关联的,或者它们是如何按照预期的方式(一起)工作的?这是其他人已经思考过的问题,还是仅仅我个人的突发奇想呢?终于有一天,我决定攻克这个问题,这篇博客就是这次努力的结果。 ## `math` 包 如果你曾经关注过 `math/rand` 包,你会同意它提供了相当易用的 API。我最喜欢的例子是 `func Intn(n int) int` 函数,它返回了一个你指定范围内的随机数。非常有用! 你也许...阅读全文

2018-01-07 21:35:54 arthurlee
阅读:2876 评论:1

golang map输出排序

由于GoLang Map 内部存储是无序的,当需要按顺序获得map存储的key -value值时,应该对遍历出来的结果进行重新排序; 在go 1.8版本后,提供的slice sort 功能使排序更简单: package main import ( "fmt" "sort" ) func main() { m := map[string]int{ "something": 10, "yo": 20, "blah": 20, } type kv struct { Key string Value i...阅读全文

2018-06-01 09:48 dpf-10
阅读:3760 评论:0

Go 语言的 Modules 系统介绍

即将发布的 Go 语言 1.11 版本将会给我们带来对 *modules*(模块)的实验性支持,这是 Go 语言新的一套依赖管理系统。 (译注:很多编程语言中,把 modules 译作「模块」,但由于目前该机制在 Go 语言还没正式发布,因此尚未有非常普及的译法。而类似的 vendor 一词的翻译,大多中文文章都是采取保留英文原文的方式处理,因此本文对 modules 的翻译参考 vendor 的处理:保留英文原文) 前些日子,[我简单地写了一编关于它的文章](https://rob...阅读全文

2018-08-23 18:37:30 Alex-liutao
阅读:10754 评论:14

工厂模式

目的:在工厂类中选择接口的实现类来实例化,功能模块中不需要关心具体逻辑。 使用条件:已经明确不同条件下创建相应实例。 优点:调用者只需要创建一个对象并调用;扩展功能时也只需要扩展工厂类;屏蔽接口的具体实现,调用者只需要关心接口的调用。 注意:工厂模式与策略模式 差别在于此处是选择对接实体,而对接的接口功能是一致的。比如吃包子,工厂模式是选择哪家店吃包子。而策略模式是选择一家店之后,在那家店选择吃什么。 golang代码: package factorypattern import "fmt" /...阅读全文

阅读:1560 评论:0

Go的CSP并发模型

Go的CSP并发模型Go实现了两种并发形式。第一种是大家普遍认知的:多线程共享内存。其实就是Java或者C++等语言中的多线程开发。另外一种是Go语言特有的,也是Go语言推荐的:CSP(communicating sequential processes)并发模型。CSP 是 Communicating Sequential Process 的简称,中文可以叫做通信顺序进程,是一种并发编程模型,由 Tony Hoare 于 1977 年提出。简单来说,CSP 模型由并发执行的实体(线程或者进程)...阅读全文

2019.01.08 17:26 一只名叫二狗的猫
阅读:1025 评论:0

go 链表

package main import ( "fmt" "log" ) // Item 可以理解为范性,也就是任意的数据类型 type Item interface { } // 一个节点,除了自身的数据之外,还必须指向下一个节点,尾部节点指向为nil type LinkNode struct { Payload Item // Payload 为任意数据类型 Next *LinkNode } type LinkNoder interface { // go语言接口,在这个接口里面,我们可以定义...阅读全文

阅读:1829 评论:0

服务端漫游

注:本文内容源自`polaris`在知识星球**Go项目实战**中的直播,已获得本人许可。 ## 第一站:穿梭于Internet ![internet.png](https://static.studygolang.com/190414/54cbfeadeaca42405e2ec9b11ac809fc.png) ## 第二站:协议 重点掌握 - TCP/UDP - HTTP 常考面试题 - TCP的三次握手过程 ...阅读全文

2019-04-14 22:14:47 OctopusLian
阅读:1913 评论:0

抽象工厂模式

一、模式的定义与特点 抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无需指定所要产品的具体类就能得到同族的不同等级的产品的模式结构 二、模式的结构与实现 1、模式的结构 抽象工厂(Abstract Factory) 提供了创建产品的接口,它包含多个创建产品的方法newProduct(),可以创建多个不同等级的产品 具体工厂(Concrete Factory) 实现抽象工厂中的多个抽象方法,完成具体产品的创建 抽象产品(Pro...阅读全文

2019.05.15 23:29 简书帅气的昵称已被使用
阅读:1263 评论:0

头条面经-PHP/Golang

一面(约1h) 在面对未知的流量暴增,可以预先怎么处理 如何限流,限流算法,对于ddos攻击怎么处理 PHP数组的底层实现 分布式事务 RPC相对于传统的API调用的优点 服务调度中心的感知与动态上下线 MySQL的索引,为什么是B+而不是平衡二叉树 索引查找在Linux的磁盘上是怎么操作的 聚簇索引相对于B+索引的优点 如何分析SQL执行慢的原因 Redis连接时的connect与pconnect的区别 Redis有哪些结构时间复杂度较高 Redis hash的实现 算法题: 在1个10G大小...阅读全文

2019-08-12 18:32:32 tyloafer
阅读:4742 评论:1