
10

来自萌新的go初体验
source link: https://studygolang.com/articles/26984
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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~
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK