Go语言学习笔记
近些年出现不少新的开发语言,比如:
Rust是Mozilla开发的注重安全、性能和并发性的编程语言。
Go语言是谷歌2009发布的第二款开源编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
D语言最初由Digital Mars公司就职的Walter Bright于2001年发布,意图改进C++语言。目前最新D语言被简称为D2。最主要的D语言的实现是DMD。
Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型的实时应用。
等等……
对于这些新语言,总有不少槽点被开发者吐槽。很多人都会进行对比,褒贬。但是我还是首先选择了Nodejs,简单快速上手,目前完全用于生产环境,它的快速开发让我很满意。ES6标准的定稿更让我肯定nodejs将会有更好的发展。
最近又学习了go语言,在学一门语言前总会迟疑值不值得学习,然后看到网上各种讨论。但我觉得还是值得学习,且不说性能有没有C++好,光凭开发效率就值得我学了,现代计算机性能都有很大的提升,如果不是开发底层系统,而是开发软件服务端系统那么它的有点足够了。
原生http请求获取参数
-
获取URL参数
-
url:localhost:8081/?startDate=2017-11-22
var query = req.URL.Query()
Println(query["startDate"])
-
go返回json数据
type ResObj struct {
Code int
Data map[string]string
}
//或
//type ResObj struct {
// Code int `json:"code"`
// Data map[string]string `json:"data"`
//}
//首先要保证ResObj的属性首字母大写,否则访问不到,其次`json:"code"`不是必须,只不过加了什么样返回的json就是什么样
//{"Code":0,"Data":{"a":"aaaaaa"}}和{"code":0,"data":{"a":"aaaaaa"}}这样的区别
func helloHandler(res http.ResponseWriter, req *http.Request) {
m := make(map[string]string)
m["a"] = "aaaaaa"
ress := &ResObj{
Code: 0,
Data: m}
byt, _ := json.Marshal(ress)
var resb ResObj
json.Unmarshal(byt, &resb)
fmt.Println(resb)
res.Write(byt)
//为什么Write参数要是byte数组?就不能像Nodejs直接是个对象。其实这是偏于底层了,Nodejs最后返回的也是byte,请看下文
}
nodejs的write函数:
response.write(chunk[, encoding][, callback])
Added in: v0.1.29
chunk <string> | <Buffer>
encoding <string>
callback <Function>
Returns: <boolean>
…此处省略n个字母 chunk can be a string or a buffer.** If chunk is a string, the second parameter specifies how to encode it into a byte stream. ** By default the encoding is ‘utf8’. callback will be called when this chunk of data is flushed.
看吧,nodejs最后也需要将对象和字符串转换为byte stream
学习笔记,简单教程:https://github.com/yuedun/go-test