Go语言中文网 为您找到相关结果 283

golang panic and recover

panic 是一个内置函数,当一个函数 F 调用 panic,F 的执行就会停止,F 中 deferred 函数调用会被执行,然后 F 返回控制到它的调用者。这个过程会沿着调用栈执行下去,直到当前 goroutine 中的所有函数返回,然后程序 crash。出现 panic 是因为: 调用了 panic 函数 出现了运行时错误(例如,数组越界访问) recover 是一个内置函数,用于恢复一个 panicking goroutine 的控制。需要注意的是,recover 只能使用在 deferred 函数中。如果当前的 goroutine panicking,recover 调用将会捕获 panic 传递的值并且恢复正常的执行。看一个例子: package main import "fmt"...阅读全文

说出你最喜欢的开源项目,七牛和你一起去支持!

![](http://77fy2z.com1.z0.glb.clouddn.com/kaiyuan.jpg) 为进一步支持开源事业,七牛推出了“七牛开源项目扶持计划”,免费支持开源项目,为开源事业尽一份力量。 如果您建有开源项目站,或者参与了其他开源项目站的维护,您就可以申请加入“七牛开源项目扶持计划”。 **申请步骤如下:** ![](http://77fy2z.com1.z0.glb.clouddn.com/申请步骤.png) 同时,我们特别推出了“说出你最喜欢的开源项目,七牛和你一起去支持!”活动,只要是你喜欢的开源项目,七牛就会和你一起去支持!我们还会在每个月的第一个星期一从参与该活动的开发者中随机抽取3个幸运开发者,各送出七牛周边礼品1份。 了解...阅读全文

数字输入golang实现的一个小游戏–猜数字

PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦! 原文步同至:http://www.waylau.com/golang-game-guess-numbe/ 随机成生一个数字,输入一个数字看否是匹对,配匹则结速,反之提示是大了还是小了, 代码如下: 每日一道理 爱心是一片照射在冬日的阳光,使贫病交迫的人感到人间的温暖;爱心是一泓出现在沙漠里的泉水,使濒临绝境的人重新看到生活的希望;爱心是一首飘荡在夜空的歌谣,使孤苦无依的人获得心灵的慰藉。 package main import ( "bufio" "fmt" "math/rand" "os" "strconv" "time" ) var ( endNum int //设...阅读全文

博文 2014-10-04 19:26:07 jiangu66

【上海招聘】新能源电动汽车公司招聘golang工程师,坐标:上海嘉定

主要工作职责 Major responsibilities 为Front-end提供相关下载及版本管理服务; Front-end与后端动态加密系统的开发和维护工作 上述后端开发的详细设计、维护和开发工作。 任职要求 Qualifications 从事相关行业3年以上,具有大型软件系统开发经验。 熟悉tcp/ip,HTTP(S)相关通信协议。 熟练掌握golang,C/C++,JAVA,Python等编程语言之一,愿意学习使用不同编程语言。 熟悉android,linux系统组件,能使用SHELL编制脚本,有OTA,FOTA相关经验尤佳。 熟悉nginx,redis,memcache,mysql等开源工...阅读全文

Golang用武之地-七牛云存储CEO许式伟

Golang用武之地-七牛云存储CEO许式伟 云落地所面临的最主要问题不是资金和硬件网络等资源,而是系统方案提供商和资源拥有者之间的信息不对称,相互找不到合适的对象。对于运营方而言,如何评估现有的方案也是一个比较大的问题,因为缺少公认的评估方法和标准。 对其内容详细阅...阅读全文

博文 2015-06-17 20:05:13 lihang421

为什么全力推荐Golang

为什么全力推荐Golang 转自:  https://zhuanlan.zhihu.com/p/19959647 讨论哪个语言更好,就像在争论姚明和刘翔谁是更优秀的运动员。因为各自的坐标象限不同,常常会陷入一个难有结论怪圈。 所以本文绝不是在说Golang是比其他语言更好的语言。Golang只是最值得推荐的语言,尤其适合快速成长中的后端研发团队。 我推荐Golang的主要理由,并不是技术性的要素:不是他的高并发能力,编译的速度,跨平台能力,内存效率,也不是社区的活跃度等等。 事实上,创业之后,或者说成为一个技术管理者之后,技术优点就已经不再是我推荐任何一种语言的关键因素了。 因为,对于一个研发团队来说,项目成败的关键因素是:成本、质量和时间! 1、人力资源的成本 人力资源是研发团队最重要...阅读全文

博文 2018-06-06 00:32:02 yueguanyun

golang语法总结(二十一):方法method

Go不像其它面相对象语言一样可以写个class,然后在class里面写一堆方法,但是它也很巧妙的实现了这种效果,我们只需要在普通函数前面加个接受者(receiver,写在函数名前面的括号里面),这样编译器就知道这个函数(方法)属于哪个struct了。 下面是简单示例: type A struct { Name string} func (a A)foo() { //接收者写在函数名前面的括号里面 fmt.Println("foo")} func main() { a := A{} a.foo() //foo} 需要注意的是,因为Go不支持函数重载,所以某个接收者(receiver)的某个方法只能对应一个函数,比如下面的就属于方法重复,编译无法通过: func (a A)foo() { fmt...阅读全文

博文 2016-02-23 15:00:04 QQ245671051

Golang实现生产者和消费者

packagemainimport("fmt""sync")//实现一个生产者和消费者/*生产者产生数据添加到通道里面,消费者消费数据从通道里面不带缓存实现*/funcmain(){ch:=make(chanint)varwgsync.WaitGroupwg.Add(2)goproducers(&wg,ch)goconsumer(&wg,ch)wg.Wait()}//生产者funcproducers(wg*sync.WaitGroup,chchanint){fori:=0;i<10;i++{fmt.Println("send:",i)ch<-i}close(ch)wg.Done()}//消费者funcconsumer(wg*sync.WaitGroup,chchanint){forv:=ra...阅读全文

博文 2017-11-01 08:04:42 dncmn

模板市场开发者开放申请,人人争当模板设计师!

有没有试过,在你自助建站的时候因为设计网站模板而烦恼?因为看不上称心的网站模板而纠结?因为看上一套模板但是需要花钱而舍不得?这些问题让建站者感到头疼。那么对于模板设计师又有什么烦心的事呢?自己设计的网站模板得不到赏识;做出精致的模板没有好的市场进行出售;做出的模板放在市场上没人购买;这些揪心的问题成为了设计者的烦恼。 ![~@C6J4B(~R$$@N4NIX${HZT.png](http://studygolang.qiniudn.com/170313/bf94409f3a7eb8dde116f0c3eb582c58.png) 就在设计师正在苦恼的时候,建站宝盒模板市场先开启模板开发者的招募。无论你是不是设计师、是不是开发者、懂不懂设计、会不会专业技术都好,只要你有创意,就能零成...阅读全文

golang 值接收者和指针接收者

interface_值接收者_指针接收者.png 例子 package main import "fmt" //定义一个 anial 接口类型 type anial interface { move() } type cat struct { name string feet int } type dog struct { name string feet int } // 采用值接受者,参数可以传递结构体类型和结构体指针类型 //func (c cat)move() { // fmt.Printf("%s,走猫步\n", c.name) //} // //func (d dog)move() { // fmt.Printf("%s,走狗步\n", d.name) //} // 采用指针接受...阅读全文

博文 2020-04-09 00:32:51 小麦客

第十三天:golang学习笔记之encoding

★encoding | encoding包定义了供其它包使用的可以将数据在字节水平和文本表示之间转换的接口. 编码在之前一直是一个重大问题,更可读的?效率更高的?轻量级的?重量级的?多种编码类型共存。 encoding encoding定义了四个接口(并没有多少对象去实现,甚至目录下的子包): // 实现了本接口的对象可以把自身编码为二进制,并作为返回值返回 type BinaryMarshaler interface { MarshalBinary() (data []byte, err error) } // 实现了本接口的对象可以把二进制编码为自身,接受者应该为指针,传参应该是TextMarshaler生成的二进制 type BinaryUnmarshaler interface { ...阅读全文

博文 2019-12-28 21:32:41 Macmillan_

google测试分享-问题和挑战

谈到google测试遇到的问题和挑战之前,我想简单的罗列下国内App测试行业遇到的几个共同的问题: (1)测试人员的价值输出难以衡量。现在很多项目发布上线,大部分价值都是开发贡献的,还有一部分是产品经理贡献的,测试贡献的就是锦上添花,很难让人信服业务发展价值的贡献。 (2)用户体验测试难以形成。随着这些年的App测试技术的发展,测试人员保证产品上线质量上没有任何问题,但是在移动互联网时代,用户对产品的体验要求更高,不是要求没有功能性的问题,而是要好用,用的很爽,这里面测试能产生的价值就需要好好思考了。 (3)自动化测试和手工测试的平衡。这几年自动化测试技术的发展,让很多公司的测试团队都大力开展自动化测试,包括敏捷测试的推广,都是自动化测试对于产品的价值体现不能够分析的非常清...阅读全文

golang 生产者消费者模型

package main import ( "fmt" "time" ) // 生产者 func producer(channel chan int){ for i:=0;i<100;i++{ fmt.Println("老怪创造了小怪", i) time.Sleep(time.Second) channel <- i } // 关闭通道 close(channel) } // 消费者 func consumer(name string, channel chan int, done chan bool){ for{ val, ok := <-channel if ok { fmt.Println(name, "消灭了怪物", val) }else{ fmt.Println("消灭了所有怪物!...阅读全文

博文 2019-12-14 19:32:40 就超棒

golang爬虫初体验

最近在学习golang,看网上很多人都喜欢爬豆瓣,今天我就写了一个golang版的爬虫。对于python爬虫,我很了解,什么dom树,js异步,爬虫技术栈都是没问题的。 刚接触golang爬虫,今天写了一个很简单的爬虫,就是使用2个库,一个http、goquery 直接上代码 package main import ( "net/http" "fmt" "github.com/PuerkitoBio/goquery" "strconv" ) func GetMovie(url string) { fmt.Println(url) resp, err := http.Get(url) if err != nil { panic(err) } //bodyString, err := iouti...阅读全文

博文 2018-07-30 00:34:51 若与

关闭HTTP的响应

当你使用标准http库发起请求时,你得到一个http的响应变量。如果你不读取响应主体,你依旧需要关闭它。对于新的Go开发者而言,这个很容易就会忘掉。 错误的做法 resp可能为nil resp, err := http.Get(url) defer resp.Body.Close()//may panic if err != nil { return err } err不为nil,resp也不为nil 有些同学可能以为这样子修改代码就可以了 resp, err := http.Get(url) if err != nil { return err } defer resp.Body.Close() 这对于绝大多数情况是可以的,因为err不为nil往往意味着resp为nil,但是当遇到一个重定...阅读全文

博文 2017-11-06 07:04:41 因心而来

比特币btcd代码之初体验

最近在看比特币源码,起初看主流的C++版本,但本人已多年未用C++,几乎相当于要重温一遍语法,另外C++环境编译要麻烦不少。于是转而从Golang版本入手,一来Golang语言相对容易入门,二来btcd版本的代码模块设计以及单元测试要比C++版本的源码更为清晰和完善。 对于Golang新手但又有其他语言基础的人,我推荐《Go语言实战》作为Golang入门书籍。该书并不像传统的教材按基础类型、循环这种套路顺序讲述,而是直接点出Golang和其他语言的不同,并用不同的小项目直接从代码开始讲解Golang的语法。对于有其他语言基础的人而言,通过代码能更容易理解一门新的语言。 同时,可以先看"如何用Go实现区块链"这个简化版的项目(https://liuchengxu.gitbooks.io/blo...阅读全文

博文 2018-07-15 15:34:48 晓涛_Klaus

【golang基础】go语言中的方法和interface的实现

我们先来看一道面试题:以下代码能编译过去吗?为什么? package main import ( "fmt" ) type People interface { Speak(string) string } type Stduent struct{} func (stu *Stduent) Speak(think string) (talk string) { if think == "bitch" { talk = "You are a good boy" } else { talk = "hi" } return } func main() { var peo People = Stduent{} think := "bitch" fmt.Println(peo.Speak(think)...阅读全文

博文 2018-03-30 16:34:42 wind5o

go语言初记

快速了解 http://go-tour-zh.appspot.com/welcome/1 (可以需要爬墙) 下面记录下了解go的过程,特别记录下与你脑子里原有“观念”不同的地方: 1. 声名 初始化,类型在后面,不一样 var a, b int var a,b =1,2var c, python, java = true, false, "no!" a,b:=func fname(string,string) //非声明,必须在func使用 短声明变量 在函数中,`:=` 简洁赋值语句在明确类型的地方,可以用于替代 var 定义。 函数外的每个语法块都必须以关键字开始(`var`、`func`、等等),`:=` 结构不能使用在函数外。 2.函数返回多个值 func swap(x, y str...阅读全文

博文 2014-10-04 19:26:41 haanico

golang nats[5] cluster集群

集群模式 nats的集群模式对客户端来说并不是透明的。 所以集群对发布者和订阅者都是有影响的。 发布者和订阅者都知道连接的是一个集群的服务,而不是一个单点服务,换句话说发布者订阅者都必须指明集群中各个节点的地址。 当然,发布者和订阅者可以只针对集群中的某节点发布消息和订阅消息,不过这并不是集群模式的目的。 目的 提高可用性和可伸缩性。 实现原理 可用性,多个节点,挂掉任意一个,不影响整个集群对外提供服务。 伸缩性,服务端支持随意增加节点。订阅者可以感知服务端节点的变动,但是发布者并不能自动感知。 3个node的集群 $ gnatsd -p 4222 -m 4333 -cluster nats://localhost:4248 -routes nats://localhost:5248,nat...阅读全文

博文 2018-08-19 22:34:56 luckyase

golang socket

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> package main import ( "fmt" "net" ) func main() { tcpAddr, _ := net.ResolveTCPAddr("tcp4", ":6000") listener, _ := net.ListenTCP("tcp", tcpAddr) defer listener.Close() for { con, err := listener.AcceptTCP() if err != nil { //fmt.Println(err) continue } fmt.Println(con.RemoteAddr().String(), " tcp connect su...阅读全文

博文 2018-09-01 14:33:12 Robin3D

GO语言圣经报个BUG

多年C、C++开发者,刚学GO 二天,目前对着GO语言圣经练习。 https://docs.ruanjiadeng.com/gopl-zh/ch1/ch1-03.html 发现示例程序dup3和dup2的执行结果不一致, 当输入的文件最后一行不是一个换行时。 gopl.io/ch1/dup3 ```go package main import ( "fmt" "io/ioutil" "os" "strings" ) func main() { counts := make(map[string]int) for _, filename := range os.Args[1:] { da...阅读全文

S.O.L.I.D 原则在 Go 中的应用

本文作者: 伯乐在线 - yemengying 。未经作者许可,禁止转载!欢迎加入伯乐在线 专栏作者。前言 由于自己最近灵感枯竭,所以我决定翻译一篇别人的文章 O(∩_∩)O~。作为一个一直想学 Go,但想了好久还没入门的人,我挑了篇写 Go 的文章,顺便帮自己熟悉一下 Go。原文是 Dave Cheney 根据自己 GolangUK 的演讲所整理的,全文以 SOLID 原则为线路,讲述了什么样的 Go 代码才算是好代码,当然 SOLID 原则也适用于其他语言。 英文原文比较长,由我和 Kevin 合译。 世界上有多少个 Go 语言开发者? 介个世界上有多少 Go 开发者捏?在脑海中想一个数字,我们会在最后回到这个话题。 Code review 有多少人将 code review 当做自己工...阅读全文

博文 2017-02-10 16:28:49 伯乐在线

初识grpc(一)——mac下的初体验

前言 最近在做这样一个需求,一个PC客户端应用拥有一个system权限下的服务,这样的一个服务在执行高权限方面确实很有优势,解决了很多的权限难题,但任何事情都有两面性,在拥有高权限的同时也丧失了一些需要用户权限执行的功能,比如要获取显示器信息的时候,因为system的session下面是没有用户界面的,所以就无法准确获取到,想要安装证书到当前用户下面的时候也是无能无力,等等随着这样的场景越来越多,对于一个用户权限下的进程需求就愈发的明显。又由于历史性的问题,核心的通信框架在这个agent中,所有的和远程server的交互都是agent执行的,所以我们需要的是一个用户权限下的进程,需要和agent进行通信,来执行agent的指令,关于这个通信的实现综合考虑了很多解决方案,后来在朋友的推荐下了解...阅读全文

博文 2019-04-18 01:34:41 CodePanda_Li

学习云数据库管理与数据迁移,还没来阿里云认证,你就OUT啦!

云数据库管理与数据迁移认证可以帮助学员掌握云数据库的概念,如何在云端创建数据库、将自建数据库迁移至云数据库MySQL版、数据导入导出,以及云数据库运维的常用操作。 认证流程 1购买认证 2学习课程/在线实验 3在线考试 4领取电子证书 课程学习 01 课程介绍 通过学习,可以了解本课程的主要内容及学习目标。 免费试听 02 云数据库简介与使用场景 通过学习,可以了解云数据库是什么,相对传统数据库的优势,以及使用场景。 免费试听 03 云数据库MySQL版的基本概念 通过学习,可以掌握云数据库MySQL版的分类,以及实例、白名单、访问模式等基本概念。 免费试听 04 创建实例、数据库与账号 通过学习,可以掌握在云数据库MySQL版中创建实例、数据库与账号的步...阅读全文

golang 面向对象

method的语法如下: func (r ReceiverType) funcName(parameters) (results) 下面我们用最开始的例子用method来实现: package main import ( "fmt" "math" ) type Rectangle struct { width, height float64 } type Circle struct { radius float64 } func (r Rectangle) area() float64 { return r.width*r.height } func (c Circle) area() float64 { return c.radius * c.radius * math.Pi } func...阅读全文

博文 2014-10-04 19:26:12 huyuantai000

go语言的设计的一点粗浅看法

Go是Google开发的一种编译型,并发型,并具有垃圾回收功能的编程语言。罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go语言,[1],稍后Ian Lance Taylor, Russ Cox加入专案中。 Go语言这个出自大公司Google的大牛的作品, 为什么没有象出自Microsoft的anders hejlsberg的C#这么吸引人并流行起来呢?其实Go语言的设计者也是有名的大牛,但为什么三个臭皮匠,竟然抵不过一个诸葛亮呢.本人以初学者第一次接触Go语言来说说粗浅的看法. package main import "fmt" func main() { fmt.Println("Hello, World") } ...阅读全文

博文 2014-10-04 19:26:38 DSharp

Go语言环境安装-Mac

初识Go语言,就被它深深地吸引住了,解放思想,关注真正该专注的东西,感觉看到了编程语言发展的未来! 接下来谈下安装方法吧 1、Homebrew 由于公司用的Mac,而所有用mac的开发人员,都离不开Homebrew这个软件包管理工具,它同样集成了Go语言,所以安装起来毫无压力 一句话搞定Go安装(过程可能有点慢,别着急) brew install go 接下来看下是否安装成功,输入 ‘go version‘ go version go version go1.4.2 darwin/amd64 好了,版本为1.4.2,安装成功,开始我们的Go语言之旅...阅读全文

golang 方法与接收者

结构体_结构体方法(接收者).png 例子: package main import "fmt" type person struct { name string age int } func (p person)Hello() { fmt.Printf("Hello, %s\n", p.name) } // 拷贝副本,复制操作 //func (p person)Guonia() { // p.age++ //} // 传递指针(内存地址),真正修改变量值 func (p *person)ZhenGuonia() { p.age++ } func main() { //实例化一个结构体 p1 := person{ name:"小麦客", age:666, } p1.Hello() //p1....阅读全文

博文 2020-04-08 07:32:48 小麦客

Go中的方法集

类型*T方法集 // code_018_struct_method_set project main.go package main import ( "fmt" ) //类型*T方法集 type Person struct { name string sex byte age int } //指针作为接收者,引用语义 func (p *Person) SetInfoPointer() { (*p).name = "yoyo" p.sex = 'f' p.age = 22 } //值作为接收者,值语义 func (p Person) SetInfoValue() { p.name = "xxx" p.sex = 'm' p.age = 33 } func main() { //p 为指针类型...阅读全文

博文 2018-10-06 02:35:09 ck_god

raft简单介绍

一致性算法 - Raft Raft 状态 一个 Raft 集群包含若干个服务器节点;通常是 5 个,这允许整个系统容忍 2 个节点的失效,每个节点处于以下三种状态之一: follower(跟随者) :所有结点都以 follower 的状态开始。如果没收到 leader消息则会变成 candidate状态。 candidate(候选人):会向其他结点“拉选票”,如果得到大部分的票则成为leader。这个过程就叫做Leader选举(Leader Election)。 leader(领导者):所有对系统的修改都会先经过leader。 Raft 一致性算法 Raft通过选出一个leader来简化日志副本的管理,例如,日志项(log entry)只允许从leader流向follower。 基于lead...阅读全文

博文 2018-08-06 11:34:53 kakushao

golang函数方法

定义 Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。语法格式如下: func (variable_name variable_data_type) function_name() [return_type]{ /* 函数体*/ } package main import "fmt" type Circle struct { radius float64 } func main() { var c Circle c.radius = 10 fmt.Println("圆的面积 = ", c.getArea()) } func (c Circle) getArea() float64...阅读全文

博文 2019-12-31 06:32:42 程序小白菜

go 方法接受者 是指针类型和非指针类型的 区别

go 方法接受者 是指针类型和非指针类型的 区别 非指针类型 package main import "fmt" // 定义接口 type Car interface { GetName() string Run() } // 定义结构体 type Tesla struct { Name string } // 实现接口的GetName()方法 func (t Tesla) GetName() string { t.Name = "test" return t.Name } // 实现接口的Run()方法 func (t Tesla) Run() { fmt.Printf("%s is running\n", t.Name) } func main() { var c Car var t T...阅读全文

博文 2018-12-25 22:35:13 295631788

golang 动态查找类型实例

关键字func和函数名之间的参数被称为receiver(接收者),将函数与接收者的类型绑在一起。如果一个函数有接收者,这个函数被称为method。不同的receiver,method可以同名这里采用封装的方法进行简述方法的妙用先看一下注册路由的方式rest.Post("/user/login", common.MakeHandler(&user.login{}))MakeHandler的方法如下,返回了一个HandlerFuncfunc MakeHandler(h Handler) rest.HandlerFunc { return func(w rest.ResponseWriter, r *rest.Request) { common_handler(w, r, h) } }具体comm...阅读全文

golang初体验

使用golang开发已经有一个多月了,除了一开始遇到的各种小白问题,IDE的选择,gopath,goroot的配置...后边还算顺风顺水的。实践体验,golang真的适合快速开发。特别是后台开发,直接上手就能用,beego框架经典web框架,写出类似python的django框架,感觉还是挺赞的。之前用来写桌面客户端,socket通信+webkit,虽然说:一切通信皆是socket,坑爹的,大家别信啊。写完后,就差喊出一句:大家快来看啊,这儿有人用golang来写桌面软件。嗯,其实效果还是挺好的,不过是个坑。以此为戒...阅读全文

博文 2015-06-17 20:02:18 qq3421923

面向项目维护者的命令行工具maintainer

maintainer 是一个用 go 实现的,面向项目维护者的命令行工具,希望能够实现各种对维护者友好的功能。 ![https://asciinema.org/a/117832](https://asciinema.org/a/117832.png) 目前包括: 生成 AUTHORS.md,记录所有贡献过代码的 Contributors 生成 CONTRIBUTING.md,描述为项目贡献的流程(未来希望能够根据不同语言做适配) 生成 CHANGELOG.md,根据项目的 Tag,Release 生成 CHANGELOG.md 已经以 Docker 分发,开箱即...阅读全文

初识go语言

1 花括号的使用: if expression {//正确使用方式 ... } 但下面这个写法就是错误的: if expression { ... } 2 Go 语言首创的错误处理规范: f, err := os.Open(filename) if err != nil { log.Println("Open file failed:", err) return } defer f.Close() ... // 操作已经打开的f文件 2.1 defer关键字 其一是 defer 关键字。 defer 语句的含义是不管程序是否出现异常,均在函数退出时自动执行相关代码 2.2 函数允许多个返回值 大多数函数的最后一个返回值会为 error 类型, error 类型只是一个系统内置的 interf...阅读全文

博文 2015-01-05 18:00:05 psujtfc

为什么全力推荐Golang

为什么全力推荐Golang 转自:  https://zhuanlan.zhihu.com/p/19959647 讨论哪个语言更好,就像在争论姚明和刘翔谁是更优秀的运动员。因为各自的坐标象限不同,常常会陷入一个难有结论怪圈。 所以本文绝不是在说Golang是比其他语言更好的语言。Golang只是最值得推荐的语言,尤其适合快速成长中的后端研发团队。 我推荐Golang的主要理由,并不是技术性的要素:不是他的高并发能力,编译的速度,跨平台能力,内存效率,也不是社区的活跃度等等。 事实上,创业之后,或者说成为一个技术管理者之后,技术优点就已经不再是我推荐任何一种语言的关键因素了。 因为,对于一个研发团队来说,项目成败的关键因素是:成本、质量和时间! 1、人力资源的成本 人力资源是研发团队最重要...阅读全文

博文 2016-10-22 13:00:04 yueguanyun

使用 Go 实现简单的事件总线

![pic_1](https://raw.githubusercontent.com/studygolang/gctt-images/master/let%E2%80%99s-write-a-simple-event-bus-in-go/pic_1.png) 事件驱动架构是计算机科学中一种高度可扩展的范例。它允许我们可以多方系统异步处理事件。 事件总线是[发布/订阅模式](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)的实现,其中发布者发布数据,并且感兴趣的订阅者可以监听这些数据并基于这些数据作出处理。这使发布者与订阅者松耦合。发布者将数据事件发布到事件总线,总线负责将它们发送给订阅者。 ![pic_2](ht...阅读全文

博文 2019-07-08 21:35:05 watermelo

golang接口实现时-值接收者和指针接收者的区别

package main import ( "fmt" ) type notifier interface{ notify() } type user struct{ name string email string } func (u *user) notify(){ fmt.Printf("sending user email to %s<%s>\n", u.name, u.email) } func sendNotification(n notifier){ n.notify() } func main(){ u := user{"ethan","xxx@xx.com"} sendNotification(u) //错误 //sendNotification(&u) //正确 } 上面...阅读全文

博文 2020-04-29 13:33:12 韩小禹

goang Receiver & interface

package main import ( "fmt" ) type Pointer struct { x string } func (this *Pointer) PrintX() { fmt.Printf("X:%s\n", this.x) } func (this *Pointer) SetX(str string) { this.x = str } type Value struct { x string } func (this Value) PrintX() { fmt.Printf("X:%s\n", this.x) } func (this Value) SetX(str string) { this.x = str } func main() { p1 := Pointe...阅读全文

博文 2016-01-19 03:00:01 diegodu

Go 开发的 Web 框架go_wtf

WTF 是小型的Web框架:Web Tiny Framework WTF的目标不是重度框架,不考虑涵盖所有功能,重点放在简单和灵活性上 其实现了一个非常灵活的路由(Mux),并且路由的使用方法也极简单 还通过中间件(Midware)的方式实现了gzip等常用功能 所有的组件都通过接口来耦合,意味着开发者可以自己实现自己的组件,替换到WTF中 一个最简单的例子: 一个稍微复杂点的例子...阅读全文

开源项目 2018-01-11 20:30:01 网友

程序员的职场进化论:物竞天择,适者生存

在我们这个地方,你必须不停地奔跑,才能留在原地。——《爱丽斯漫游仙境》红桃皇后​这句话恰恰可以作为我们这个时代的注脚!你看,我们工作节奏越来越快,越来越忙碌,永远有做不完的事情,哪怕 996 也阻止不了工作堆积成山的节奏。于是我们只能先完成任务再说,跑,跑,跑,跑得足够快,我们才能待在这个地方,至于手上流转的这些事情,完成得好不好,符不符合自己的职业规划,对自己的能力提升有没有帮助,都来不及考虑了。日复一日如此这般,有一天我们忽然发现:好像我没怎么成长啊,好像越来越没竞争力了……然而总有一天,我们会遇到更复杂的事情,需要更高的能力才能应对,怎么办?看来只好利用业余时间来学习提升啦!然而遗憾的是,我们已经处在一个不可逆转的碎片化时代,你不是在电梯里,就是在走路,不是在走路,就是在路边买早餐,不...阅读全文

博文 2019-04-08 22:30:33 answer-A

网站运营方案该怎么策划

网站运营的重点在于计划、安排与分配。要经营好自己的网站,你要学会该怎么去做好网站运营。网站运营是一种思维的活动,没有死板的限定,要按照自身的情况与网站的定位来知道属于你的网站运营方案。不同种类的行业、不同类型的网站都有他们特定的网站运营策划方案。接下来小编为大家分析下,网站运营方案该怎么策划。 网站运营的内容是策略,核心是决策。将网站推广等工作加以正确有力的决策执行,才能大大的发挥作用。做网站运营,是一个循序渐进的一个过程,不可能一蹴而就。需要不断的磨合和改善,才能更好的完善体系,发挥作用。 网站建设优化方面: 1.需求整理 需求采集、分析和处理是网站营运的一项重要工作。运营人员是开发人员与销售人员、客户之间沟通的桥梁。在网站营运过程中,总会产生各种需求修改和新的...阅读全文

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

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

博文 2016-03-23 15:00:01 kai_ding