OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

Go 语言基础教程:10分钟入门


分享到
分类 技术前沿   关键字 开源   发布 1518409521  1410794537832
注意 转载须保留原文链接,译文链接,作者译者等信息。  

Go是你可以信任的聪明的人设计的一个可爱小巧的编程语言 ,并且由一个不断增长的巨大开源社区进行持续的完善和提高 。

Go意味着简单, 但有时它的约定可能有点难以理解。 我想告诉你我如何开始我的Go项目,以及如何使用Go的常规用法。 让我们构建一个web应用程序的后端服务。

设置您的环境

当然,第一步是安装Go。 您可以从官方网站为 您的操作系统安装使用二进制发行版 。 如果你在Mac上使用自制程序, brew install go很起作用。 当你完成安装,这应该工作:

$ go version
go version go 1.3.1 darwin/amd64

一旦安装完成,唯一另外要做的是设置GOPATH。 这是根目录,将保留你所有的Go代码,建立artifacts。 这个Go工具将在你的GOPATH创建三个子目录:bin,pkg和src。 有些人把它设置成 $ HOME /go,但我更喜欢简单的 $ HOME确保它能导出到您的环境。如果你使用bash,下面所示的代码应该工作:

$ echo 'export GOPATH=$HOME' >> $HOME/.profile
$ source $HOME/.profile
$ go env | grep GOPATH
GOPATH="/Users/peter"

Go有很多可用的编辑器和插件。 我个人是Sublime Text和优秀的 GoSublime插件的狂热粉丝。 但是语言是非常简单直白的,特别是对于一个小项目,一个纯文本编辑器是绰绰有余的。 我和一群专业的,全职Go开发人员一起工作,他们仍然使用vanilla vim,甚至没有语法高亮显示。 要开始开发Go程序,你肯定不再需要更多的东西。 像往常一样,简单就是王道。


一个新项目

在运作环境中,我们将给这个项目创建一个新的目录。Go工具链期望所有的源代码存在于GOPATH / src,所以我们总是在这个路径下工作。 工具链也可以直接导入和托管在GitHub或Bitbucket等网站上的项目互动,前提是假设他们放在正确的地方。

对于这个示例, 在GitHub创建一个新的空的库。 我将假定它叫做“hello”。 然后,在$GOPATH路径下为它创建一个主页。

$ mkdir -p $GOPATH/src/github.com/your-username
$ cd $GOPATH/src/github.com/your-username
$ git clone git@github.com:your-username/hello
$ cd hello

太好了。 创建 main.go,这将是我们的绝对最小Go程序。

package main

func main() {
    println("hello!")
}

调用 go build编译当前目录下的所有文件。 它会产生一个和这个目录名称相同的二进制。

$ go build
$ ./hello
hello!

简单! 即使编写Go应用程序几年后,我都像这样开始我所有的新项目。 一个空的git存储库,a  main.go,一点点的打字。

因为我们注重遵循共同的约定,您的应用程序是可以自动的 go get. 如果你承诺,把这个单一文件放到GitHub, 任何一个安装过Go的人应该可以这样做:

$ go get github.com/your-username/hello
$ $GOPATH/bin/hello
hello!


创建web服务器

让我们把我们的hello,world变成一个web服务器。 这是完整的程序。

package main

import "net/http"

func main() {
    http.HandleFunc("/", hello)
    http.ListenAndServe(":8080", nil)
}

func hello(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("hello!"))
}

有一点需要拆包。 首先,我们需要从标准库包导入 net/http 

import "net/http"

然后,在主函数中,我们在网络服务器的根路径下安装一个处理函数。 http.HandleFunc 操作缺省HTTP路由器,一般称为 ServeMux

http.HandleFunc("/", hello)

函数hello,是一个 http.HandlerFunc ,这意味着它有一个特定类型签名,并可以作为参数传递给HandleFunc。 每次和根路径相匹配的一个新的请求到达HTTP服务器时,服务器将生成一个新的goroutine执行hello函数。 hello函数简单地使用 http.ResponseWriter 写一个响应给客户端。 因为http.ResponseWriter.Write取用更普遍的 []byte或byte-slice作为参数,我们做一个简单的字符串类型转换。

func hello(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("hello!"))
}

最后,我们通过 http.ListenAndServe 用默认的ServeMux启动HTTP服务器的8080端口。这是一个同步,或阻塞调用,这将保持这个项目一直运行直到被中断。 编译和运行和之前一样。

$ go build
./hello

在另一个终端,或您的浏览器,创建一个HTTP请求。

$ curl http://localhost:8080
hello!

简单! 没有安装框架,没有依赖下载,没有创建任何项目架构。甚至二进制本身是原生代码,静态链接的,没有运行时依赖关系。 另外,标准库的HTTP服务器是产品级的,可以防御常见的攻击。 它可以直接为在线网络提供服务请求。

 

原文地址: 点此
社区评论 ( Beta版 )
  • #0 zkwap 1411634466224

    喜欢Golang

  • #1 code.vn 1414048199477

    一直没觉得go有什么特别吸引人的地方。。。

  • #2 施勾轨 1444984153021

    做web网站,nodejs和go哪个更好用?

OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. NodeBots-JavaScript在智能设备驱动(物联网)中的崛起
  2. CSS的力量:用一个DIV画图
  3. 内存管理技巧:如何避免JavaScript的内存泄露
  4. 响应式设计在图片上的应用: 一个HTML元素如何让Web更快
  5. CSS垂直水平完全居中手册
  6. 今天我去面试, 受打击了:你是学 .net 的吧?
  7. JavaScript中匿名函数和命名函数的性能差异
  8. LowDB - 基于Node的纯Json文件数据库
  9. 创造canvas的艺术
  10. 前端开发薪资之各地区对比(图文分析)
  11. AirJD-简单好用的免费建站工具

 相关阅读 - 技术前沿
  1. Docker究竟是什么,为什么这么流行,它的优点和缺陷有哪些?
  2. JavaScript有可能取代AppleScript成为OS X平台的默认编程脚本
  3. NodeBots-JavaScript在智能设备驱动(物联网)中的崛起
  4. 响应式设计在图片上的应用: 一个HTML元素如何让Web更快
  5. 微软Azure云推出基于JSON的NoSQL数据库DocumentDB
  6. Chrome V8将实现ES6的类语法(class)
  7. 自己动手写CSS流式(响应式)布局
  8. 为JavaScript设计一个指数操作(运算)符
  9. TJ Holowaychuk将Express维护权移交给StrongLoop
  10. 主流搜索引擎闯入Linux命令行世界

 关键字 - 开源
  1. Mongoose学习参考文档——基础篇
  2. 15个最好用的Node.JS后端框架
  3. 迫于社区压力:React(Native)16将更换成MIT开源协议
  4. 开源Node.js商城:基于Thinkjs+Mysql的开源微信小程序商城
  5. 使用NodeJS搭建邮件自动发送服务器
  6. NodeJS 文件(夹)压缩/解压方案(zip/unzip)-Linux上zip相关命令
  7. QRCode:用纯JavaScript实现的微信二维码图片生成器
  8. Stop-Server:用手机关闭你的电脑
  9. 几款开源的图形化Redis客户端管理软件
  10. Node.JS如何调用Chrome打开浏览器链接地址

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号