163
回答
OSChina 第 36 期高手问答 —— Go 语言 Web 开发
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

OSCHINA 本期高手问答我们请来了 @astaxie (谢孟军) 为大家解答关于 Go 语言开发 Web 应用方面的问题。

谢孟军,网名 @astaxie ,现就职于盛大云,高级研究员,技术经理,主要从事盛大云分发的系统研发工作,努力为盛大游戏、盛大文学、酷6网等提供更好的CDN服务。热爱技术,尤其关注实现服务器端高性能、高可用等相关技术。开发了beego、beedb等各类基于Go语言的开源框架和库,致力于Go语言的推广和研究。

本次高手问答博文视点赞助5本图书,将在问答结束后随机挑选5名参与人赠予《Go Web 编程》一书:


OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就 Go 语言开发 Web 应用方面的问题向 @astaxie 提问,请直接回帖提问。

举报
红薯
发帖于5年前 163回/25K+阅
共有163个答案 最后回答: 4年前
@astaxie :谢老师你好,Go语言在Web开发方面有哪些优势和劣势?相关的IDE有哪些?相比PHP和Python,Go语言有哪些优点呢?
--- 共有 4 条评论 ---
hilojack大大,只谈了优点没有谈缺点呀 3年前 回复
橙花街p[ 4年前 回复
答复哈IDE还有goclipse 5年前 回复
astaxieGo在Web开发方面的优势就是性能,还有就是静态语言所拥有的特性,能够在编译阶段fix很多潜在的bug,目前主要的开发工具有liteide、sublime、idea插件,我自己偏向使用liteide。和其他传统的动态语言相比,Go在性能上是最大的优势。 5年前 回复
@astaxie:谢老师你好,我是一个编程新手正在学习基础的python,前几天看到GOlang觉得非常感兴趣。请问能否用python当敲门砖,进而学习golang?谢谢。
--- 共有 1 条评论 ---
astaxie可以的啊,学习一门动态语言,然后再学习一门静态语言,我觉得非常合适啊,我自己以前也是做PHP的,后来学习的Go语言,这个过程会让你的知识体系得到更好的加强。 5年前 回复
@astaxie :哪些场合适合用go语言来进行Web开发,哪些场合不适合?
--- 共有 2 条评论 ---
玛雅牛回复 @astaxie : 多谢你的回复,我曾测试过go的性能的确非常好,非常适合做API服务,如你所言,模板的确不太好。这块要是能做到将html模板编译成go代码,再讲go代码编译成二级制文件,通过两次编译达到可用性和性能的完美结果。这可能需要编写一个解析html模板的编译器。呵呵。 5年前 回复
astaxie目前我主要用Go来开发服务器应用,还有就是API方面的应用,这几块都是Go的强项,而且性能很好,但是Go在模板处理这一块我觉得还需要加强,像后台系统开发我自己还是采用PHP来开发,因为确实比Go开发要快速很多。 5年前 回复
@astaxie :您好,请问一下go语言目前做web开发是否成熟?例如 IDE方面,类库方面,语言是否成熟呢?是否有一些小问题的呢??谢谢
--- 共有 1 条评论 ---
astaxie我现在自己项目用了很多Go开发,Go的网络库和数据处理的库相当的成熟稳定,至少我现在开发的几个项目非常稳定。而且你也看到七牛整个云储存系统都是用Go开发的,目前他们的客户都是上亿用户的camera360等 5年前 回复
@astaxie : 谢老师,你好,我目前主要在使用JAVA。我之前先看七牛《GO语言编程》,然后又在GitHub看了您的《GO WEB编程》,但是至今还没有真正地用GO开发过某个东西,总觉得跟JAVA差别有些大,特别是试来试去始终找不到一个比较称心地IDE。我这种情况下,如果想继续学习和使用GO的话,可以帮忙给些建议么?
--- 共有 1 条评论 ---
astaxie我觉得你最好是找个小应用开始做起来,做和看完全是两码事,不管你看得再多不做的话等于0,所以我的建议就是做项目,做小应用。例如自己做个博客、做个爬虫、做个FQ工具,利用自己一切的需求去开发一些小应用。 5年前 回复
@astaxie :您好,我是个GoLang爱好者,有几个问题一直困扰我: 1、Go Routing为什么是比线程小?它是什么概念? 2、Go Routing为什么能实现高并发,它所依赖的基础、原理是什?如何保障并发的高性能与稳定? 3、Go如何实现异步IO?Go Routing与libevent/epoll,netty能不能比较? 4、Go如何利用inotify? 5、目前适不适合用Go开发产品级的应用,有哪些成功案例? 谢谢!
--- 共有 3 条评论 ---
heiing回复 @astaxie : 太好了,这篇文章很详细,非常感谢 5年前 回复
astaxie4、Go可以利用inotify:github.com/howeyc/fsnotify 我的beego辅助开发工具就是利用了这个特性 5、我个人觉得很适合,而且我们内部很多项目我都是用Go开发的,其他成功案例请看:https://gist.github.com/ungerik/3731476 5年前 回复
astaxie1、goroutine简称协程(G),你可以把它想成一个一个的任务,runtime会维护一个线程池(W),然后在设定的CPU核上(P)上去运行,所以goroutine是比线程更小单位的运行单元,这篇文章详细的解释了你需要的知识点123:http://www.sizeofvoid.net/goroutine-under-the-hood/ 5年前 回复
和ERLANG比,并行有哪些优点,在web上如何体现?
--- 共有 1 条评论 ---
astaxie我不懂erlang,所以我无法比较,但是这里有一篇介绍Go如何处理并行的http://talks.golang.org/2012/concurrency.slide#1 5年前 回复

@astaxie :用GO实现后端数据处理, 前端PHP调用, 合适吗?如果GO操作mysql, 被频繁调用, GO的优势还能发挥吗?

--- 共有 1 条评论 ---
astaxie你这种属于典型的API设计,我觉得听适合目前Go的,我自己也有项目是这样做的,我这次去Qcon分享的也是这个主题《Go API编程》,频繁操作mysql你可以做个连接池嘛,这个很多方案解决的,很语言好像没什么大的关系 5年前 回复
顶部