来自萌新的go初体验
2014 年 6 月 14 日
Go,天生高并发支持,语法简洁,占用内存和CPU资源小。所以,学它!!
本文会简单讲明几个点,会采用对比的理解方法。希望对新入门的宝贝萌有所帮助。
本文会简单讲明几个点,会采用对比的理解方法。希望对新入门的宝贝萌有所帮助。
从零开始
简单构建一个main.go,执行 go run amin.go。
注意事项:1.应用程序的执行入口是main()函数。 2. 严格区分大小写。
package main import ( "fmt" ) func main(){ fmt.Println("Hello World"); } 复制代码
简单熟悉main.go.下面的例子帮助大家更深一步了解。
package main import "fmt" func main(){ var countryCapitalMap map[string]string countryCaptialMap = make(map[string]string countryCaptialMap["Paris"] ="巴黎" countryCaptialMap["Japan"] = "日本" countryCaptialMap["Italy"] = "意大利" } for country :=range countryCapitalMap{ fmt.Println(country,"首都是",countryCapitalMap[) } 复制代码
var countryCapitalMap map[string]string make[key]value
- make(map[string]string)
- make([]int, 2)
- make([]int, 2, 4)
-
range
:Go语言中range(范围)的关键字用于for循环中迭代数组(array),切片(slice),通道(channe)或集合(map)的元素。
go语言的web框架 gin
package main import "github.com/gin-gonic/gin" func main(){ engine := gin.Default() engine.GET("/", func(context *gin.Context) { context.String(http.StatusOK, "hello gin get method") }) _ = engine.Run() } 复制代码
以上使用了一个很短的代码实现了一个web服务。使用gin的Default方法创建一个路由。然后通过HTTP方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到gin.Context的上下文环境。下面是对代码的详解:
-
"github.com/gin-gonic/gin"
: 第三方模块很多都是github.com开头的
安装命令:go get -u github.com/gin-gonic/gin
-
engine := gin.Default()
相当于const app=express() gin相当于express -
engine.GET
:添加GET请求,第一个是路径,第二个是 -
context
:上下文访问的一个环境,分析请求以及形成一个返回。它相当于koa的ctx,相当于express的req+res。本次实例是采用*gin.Context的一个指针类型。 -
context.String
代表着res.String(),返回一个字符串。 -
_ = engine.Run()
相当于node里的listen ,默认端口为8080。也可以自己修改_ = engine.Run(“:3000”)。_
下划线表示不处理,无论传递什么都接受,万能用法。
resetful
- resetful 使用相对应的语义的请求动词+语义化的url
POST
engine.POST("/", func(context *gin.Context) { context.String(http.StatusOK, "hello gin post method") }) _ = engine.Run() } 复制代码
- POST请求是在保存数据的时候使用
- /login POST 表示登录
- /post/1234 GET 读某篇文章 id为1234
- /post POST 表示新增一篇文章
- /post GET 表示获取文章列表
PUT
engine.PUT("/", func(context *gin.Context) { context.String(http.StatusOK, "hello gin put method") }) _ = engine.Run() } 复制代码
put动词经常会和post混淆,put和post都是用来保存数据,但是put是修改数据。比如在库里添加一条信息
{username:'meimei',hobbies:['赚钱','花钱']} 复制代码
若是用post就是新增一个原来没有的数据,若是put,则表示修改,整个的替换。
delete
就是表示删除。例如:配合 /post/123 表示删除某篇文章。
PATCH
是用来更新局部。
HEAD
不在意返回内容。作用:在不获得资源的情况下,了解资源的信息。比如是否修改过?文件大小如何?文件是否存在?
它的位置在响应头里。
最后
- 本文是作者总结与借鉴,若有错误或者意见,宝贝萌可以在评论区留言。
- 欢迎大家一起学习交流。Pink~