关于golang中包(package)的二三事儿

golang的package和其他语言的组织方式完全不同,刚开始接触时,很不适应。 golang的package的特点: 1、go的package不局限于一个文件,可以由多个文件组成。   组成一个package的多个文件,编译后实际上和一个文件类似,组成包的不同文件相互之间可以直接引用变量和函数,不论是否导出;   因此,组成包的多个文件中不能有相同的全局变量和函数(这里有一个例外就是包的初始化函数:init函数,下面还有讨论) 2、go不要求package的名称和所在目录名相同,但是你最好保...阅读全文

2014-03-12 15:49 dajianshi
阅读:22777 评论:3

Go 语言中的方法,接口和嵌入类型

本文为转载技术翻译,原翻译地址:http://se77en.cc/2014/05/05/methods-interfaces-and-embedded-types-in-golang/ 原文地址:http://www.goinggo.net/2014/05/methods-interfaces-and-embedded-types.html 概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 编译器会因为我们同时有两个接口实现而报错...阅读全文

2014-05-16 07:38 kai_ding
阅读:6055 评论:1

如何写 go 代码 (How to Write Go Code 翻译)

目录 1. 写在前面的话 2. 介绍 3. 代码组织 3.1. 工作区 3.2. GOPATH 环境变量 3.3. Package 路径 3.4. 第一个 GO 程序 3.5. 第一个 GO 库 3.6. Package name 4. 测试 5. 远程 package 6. 下一步 7. 获取帮助 写在前面的话 本文为Go官方网站 How to Write Go Code 这篇文章的翻译,水平有限, 有些地方不好翻译的地方会用意译的方法, 关于代码示例的路径等方面可能也会有些不一样. 介绍 本...阅读全文

阅读:4444 评论:0

分布式后台任务队列模拟(Golang)

最近研究了下gowoker,这东西代码少而精,Golang真是很适合实现这类东西。 我去掉参数配置,JSON,Redis这些东西,用goworker的方式做了个最简单的实现。 实现如下功能: 1. worker向JobServer注册可执行的功能 2. JobServer轮询,有job就执行,没有则继续轮询 3. client向JobServer提出任务请求,并传入参数 4. JobServer依请求丢给worker执行(可并发或串行执行) 5. JobServer继续轮询 我弄的这个代码很少,...阅读全文

2015-03-24 14:12 xcltapestry
阅读:6329 评论:0

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

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

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

golang中bytes包用法

本文转自 Golove的博客http://www.cnblogs.com/golove/p/3287729.html bytes 包中的函数和方法 // bytes 包实现了用于操作 []byte 的函数,类似于 strings 包中的函数 // bytes.go ------------------------------------------------------------ // Compare 用于比较两个 []byte,并返回 int 型结果 // a == b 返回 0 // a...阅读全文

2014-10-20 20:56 chenbaoke
阅读:23919 评论:0

How to Write Go Code

https://golang.org/doc/code.html Introduction(简介) 本文包含了一个简单的Go程序包和开发过程以及go tool的使用简介。 go tool要求你的代码有固定的组织形式。请认证阅读此文,它将带你如何如何最简单的开始你的go编程之旅。 当然,我们还准备了一个直观的视频 Code Organization(代码组织) Workspaces go tool 主要用于各种公共库中的开源代码。虽然你可能没有打算发布你的代码,但是环境配置应该是一样的。 go 代...阅读全文

2015-10-09 11:32 xiaohu50
阅读:1777 评论:0

Go 语言方法接受者类型的选择

概述 很多人(特别是新手)在写 Go 语言代码时经常会问一个问题,那就是一个方法的接受者类型到底应该是值类型还是指针类型呢,Go 的 wiki 上对这点做了很好的解释,我来翻译一下。 何时使用值类型 如果接受者是一个 map,func 或者 chan,使用值类型(因为它们本身就是引用类型)。如果接受者是一个 slice,并且方法不执行 reslice 操作,也不重新分配内存给 slice,使用值类型。如果接受者是一个小的数组或者原生的值类型结构体类型(比如 time.Time 类型),而且没有可...阅读全文

阅读:1486 评论:0

go中方法的接收者是值或者指针的区别

值类型的变量和指针类型的变量先声明一个结构体:type T struct { Name string } func (t T) M1() { t.Name = "name1" } func (t *T) M2() { t.Name = "name2" }12345678910111234567891011M1() 的接收者是值类型 T, M2() 的接收者是值类型 *T , 两个方法内都是改变Name值。下面声明一个 T 类型的变量,并调用 M1() 和 M2() 。 t1 := T{"t1"}...阅读全文

阅读:9150 评论:0

如何优雅地关闭Go channel

本文译自:How To Close Channels in Golang Elegantly。几天前,我写了一篇文章来说明golang中channel的使用规范。在reddit和HN,那篇文章收到了很多赞同,但是我也收到了下面几个关于Go channel设计和规范的批评: 在不能更改channel状态的情况下,没有简单普遍的方式来检查channel是否已经关闭了 关闭已经关闭的channel会导致panic,所以在closer(关闭者)不知道channel是否已经关闭的情况下去关闭channel...阅读全文

阅读:11615 评论:4

最全知乎专栏合集:编程、python、爬虫、数据分析、挖掘、ML、NLP、DL...

(本文先简单罗列下,后续要是有好的展示方式,会进行调整)上一篇文章《爬取11088个知乎专栏,打破发现壁垒》 里提到,知乎官方没有搜素专栏的功能,于是我通过爬取几十万用户个人主页所专注的专栏从而获取到11088个知乎专栏。本回筛选出涉及:编程、python、爬虫、数据分析、挖掘、ML、NLP、DL等关键词的专栏,按照排名、关注人数、专栏名称、专栏简介等顺序,罗列出史上最全专栏合集,以供大家顺藤摸瓜、前去观摩和学习。 筛选出来的专栏数据和全部11088个专栏数据,评论区有获取方式。对其他主题的专栏...阅读全文

阅读:12050 评论:1