来自萌新的go初体验

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
  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~