奇妙的go语言(開始篇)
【 声明:版权全部。欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
从前接触脚本语言不多,可是自从遇到go之后,就開始慢慢喜欢上了这个脚本语言。go语言是google设计,主要用来从事web、server側程序的开发,学习起点低。
一般熟练掌握C、python的朋友花上几个小时就能够学会go语言。
a) 安装环境
鉴于个人主要使用linux进行工作,所以这里介绍的都是linux下的安装方式。
centos: sudo yum install golang
ubuntu: sudo apt-get install golang
b) 学习资源
本来学习go语言,最好的学习环境应该是官方站点,可是因为GFW的原因,訪问上还是有一定的困难。所以,建议大家能够訪问一下coolshell.cn站点,上面有go语言的内容,各自是个go语言(上)、go语言(下)。
c) 书籍
不管是亚马逊、当当还是京东上面,关于go语言的书籍不是非常多。可是有两本我认为还是不错的,一本是谢孟军的《go web编程》,另外一本是许式伟的《 ie=UTF8&refRID=0M8E7ZN5RM34YAM1E5H8">go 语言编程
d) 编译方法
假设须要生成运行文件,输入go build name.go, 当中name.go表示你须要编译的那个文件名称,这时会有一个运行文件生成。
假设你须要马上看到效果。输入go run name.go就可以。
e)范例
e.1 add.go
package main import "fmt" func add(a int, b int)(c int) { c = a + b
return c
} func main() { c := add(1 ,2)
fmt.Println(c) }
直接输入go run add.go就能够打印效果了。
e.2 简单webserver
package main import (
"fmt"
"net/http"
) func sayHelloName(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "hello, world")
} func main() { http.HandleFunc("/", sayHelloName)
http.ListenAndServe(":9090", nil) }
这时一个简单的webserver,首先go run hello.go之后。打开os下的一个browser,输入http://127.0.0.1:9090,你就会在网页上看到web的打印了。
e.3 带有表单处理的webserver
package main import ( "fmt"
"html/template"
"net/http"
) func sayHelloName(w http.ResponseWriter, r* http.Request) { fmt.Fprintf(w, "hello, world")
} func login(w http.ResponseWriter, r* http.Request) { if r.Method == "GET" { t, _ := template.ParseFiles("login.gtpl");
t.Execute(w, nil)
} else { r.ParseForm()
fmt.Println("username:", r.Form["username"])
fmt.Println("password", r.Form["password"]) } } func main() { http.HandleFunc("/", sayHelloName)
http.HandleFunc("/login", login)
http.ListenAndServe(":9090", nil)
}
上面给出的仅仅是代码内容,你还须要一个login.gtpl模板文件,
<html>
<head>
<title> </title>
</head> <body>
<form action="http://127.0.0.1:9090/login" method="post">
user: <input type="text" name ="username">
pass: <input type="password" name="password">
<input type="submit" value="login">
</form>
</body>
</html>
运行go代码之后。试着在浏览器下输入127.0.0.1:9090和127.0.0.1:9090/login,你会有不同的惊喜。
奇妙的go语言(開始篇)的更多相关文章
- 作为刚開始学习的人应该怎样来学习FPGA
FPGA作为一种高新的技术.已经逐渐普及到了各行各业.不管是消费类.通信类.电子行业都无处不在它的身影,从1985年第一颗FPGA诞生至 今,FPGA已经历了将近20多个年头,从当初的几百个门电路到如 ...
- iOS8開始默认语言有变化
[问题] 測试组发现APP在iOS8及以上系统设备上,语言设置为我们不支持的小语种时.APP没有使用默认的英文,而是选择了上一次设置的语言. [分析] 经过研究发现,在iOS8系统開始,在设备语言设置 ...
- C语言必会面试题(3、耶稣有13个门徒,当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,...)
3.耶稣有13个门徒.当中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个開始报号:1.2,3.1,2,3.... 凡是报到"3"就退出圈子.最后留在圈子 ...
- iPhone开发【一】从HelloWorld開始
转载请注明出处,原文网址:http://blog.csdn.net/m_changgong/article/details/8013553 作者:张燕广 从经典的HelloWorld開始踏入iPhon ...
- 从零開始学习OpenCL开发(一)架构
多谢大家关注 转载本文请注明:http://blog.csdn.net/leonwei/article/details/8880012 本文将作为我<从零開始做OpenCL开发>系列文章的 ...
- Scala从零開始:使用Intellij IDEA写hello world
引言 在之前的文章中,我们介绍了怎样使用Scala IDE也就是eclipse中集成的Scala开发插件来进行Scala语言程序的开发,在使用了一段时间之后,发现eclipse对Scala的支持并非非 ...
- iOS runtime探究(二): 从runtime開始深入理解OC消息转发机制
你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639289 本文主要解说runtime相关知识, ...
- Linux内核project导论——linux学习和职业曲线(刚開始学习的人,中级,高级都可參考)
Linux世界介绍 给自己定级 门外汉: 不会安装操作系统 不会用虚拟机(安装和使用) 入门级: 熟悉常见的发行版,甚至装过而且能用一些特殊发行版(比如kali)做过一些简单的图形界面的使用. 会一些 ...
- 单片机小白学步系列(十三) 点亮第一个LED——好的開始,成功的一半
前面介绍了非常多概念知识.做了非常多准备工作,从这一节開始,我们正式開始单片机的学习.我们将使用单片机完毕一项非常easy的工作:点亮一个发光二极管(即LED:Light-Emitting Diode ...
随机推荐
- FTP上传文件服务器python实现
总结 使用Python的socket和socketserver模块实现ftp文件服务器.不是很难,但在粘包的问题上纠缠了不少时间.解决办法是发送文件信息之后等待一段时间. #!/usr/bin/pyt ...
- hdu 2136(质数筛选+整数分解)
Largest prime factor Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Python Challenge 第十关
第十关是一张牛的图片和一行字:len(a[30])=?.图片中的牛是一个链接,点开后进入一个新页面,只有一行字: a = [1, 11, 21, 1211, 111221, 看来要知道第31个数多长, ...
- 深入V8引擎-Time核心方法之win篇(1)
上一篇的源码看得十分无趣,官方文档跟黑心棉一样渣. 这一篇讲讲windows操作系统上的时间戳实现,由于类的声明,方法解释上一篇都贴过了,所以这次直接上对应版本的代码. windows与mac很不一样 ...
- luogu P1489 猫狗大战
题目描述 新一年度的猫狗大战通过SC(星际争霸)这款经典的游戏来较量,野猫和飞狗这对冤家为此已经准备好久了,为了使战争更有难度和戏剧性,双方约定只能选择Terran(人族)并且只能造机枪兵. 比赛开始 ...
- [BZOJ3212][POJ3468]A Simple Problem with Integers
题目大意: 维护一个长度为$n(n\leq100000)$的数列,支持区间加.区间求和两种操作,操作共$m(m\leq100000)$次. 思路: Splay区间操作. #include<cst ...
- Java开发笔记(一百零四)普通线程池的运用
前面介绍了线程的基本用法,以及多线程并发的问题处理,但实际开发中往往存在许多性质相似的任务,比如批量发送消息.批量下载文件.批量进行交易等等.这些同类任务的处理流程一致,不存在资源共享问题,相互之间也 ...
- 2016集训测试赛(二十)Problem B: 字典树
题目大意 你们自己感受一下原题的画风... 我怀疑出题人当年就是语文爆零的 下面复述一下出题人的意思: 操作1: 给你一个点集, 要你在trie上找到所有这样的点, 满足点集中存在某个点所表示的字符串 ...
- centos7设置系统语言为中文
centos7设置系统语言为中文 修改 /etc/locale.conf 文件内容为: LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB1 ...
- SVG图片背景透明
今天在调整网页的时候,将logo以原有直接贴代码形式,改为加载文件. 其实真正的目的是做SEO.上次SEO交流后得出 结论:核心在于内容的本身的优化.信噪比很重要.也就是有效信息需要占文章的主要内容, ...