来自萌新的go初体验

莓莓莓 · · 967 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前言

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声明变量,相当于var,没有分配空间。
  • make[key]value make的作用是分配空间。它有三种不同的用法。
  1. make(map[string]string)
  2. make([]int, 2)
  3. 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~

有疑问加站长微信联系(非本文作者)

本文来自:掘金

感谢作者:莓莓莓

查看原文:来自萌新的go初体验

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

967 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传