前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[go语言开发]从0开始开发美图站——第四课[开始我们的web端的HelloWord]

[go语言开发]从0开始开发美图站——第四课[开始我们的web端的HelloWord]

作者头像
用户2353021
发布2021-03-17 09:40:24
2890
发布2021-03-17 09:40:24
举报
文章被收录于专栏:RFFAN实验室RFFAN实验室

首先,我们先下载一个网络框架,使用如下命令。

代码语言:javascript
复制
go get -u github.com/gin-gonic/gin

在上面的教程中,我们也看到了go get的多次出现。那么在正式的学习过程中,我们先来了解一下go的包管理系统吧。在1.11之前Go语言的包管理都是在gopath下的,所有的包和文件都得在这个目录下面。而在此后的版本中引入了go module包管理,解放了开发源文件也必须放在gopath下的束缚。当然在这里贯穿始终的下载包的工具为go get。 go get 可以下载所有的开放git下的go语言包。 而后面的-u参数就是更新包,如果你不想更新,那么就不要带上-u这个参数。

现在我们稍微了解了一下go的包管理系统,那么让我们开始编写一个可爱的接口程序吧!

首先,我们得把我们的main.go文件改成成为如下的。

代码语言:javascript
复制
package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

func main() {
	fmt.Println("你好世界")
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run(":8080")
}

这里可以看到相比之前,我们多了import 下的括弧,以及fmt下面多了几行。别急,我们现在一行一行解释一下,如果有基础的同学可以直接跳过。

首先我们来到第一行

代码语言:javascript
复制
package main

这一行里就定义了一个包名,一般来说包名跟存放这个go文件的目录名相同,不过有一个时候这个包名是不一样的就是当你这个go文件为入口的main文件的时候,这个时候就定会一为main而不是文件夹名字。如果你这个文件夹下有多个go文件,存在多个包名,如一个是package main 和package imgapi 那么运行的时候就会报冲突。所以一般在main文件的目录下只会存在一个main文件不会存在其他go文件。

第二行有所变化,从单一的

代码语言:javascript
复制
import "fmt"

变成了

代码语言:javascript
复制
import (
	"fmt"
	"github.com/gin-gonic/gin"
)

这里就是引用了下面程序体中用到的方法的包了,例如下面打印的你好世界用的是fmt包就得import一下。而外面的括号,可以让我们少些一下import本来的样子是

代码语言:javascript
复制
import "fmt"
import "github.com/gin-gonic/gin"

现在有了括号之后,你只需要写一次import 方便多了。不过现在也不需要去管他,因为编辑器ide会自动帮你添加或者删除包(如果你引入了,但是在下方的程序体中没有使用,编译是会报错的。所以会有删除多余引用包的功能。)

下面我们就来介绍程序体了。

go语言所有的方法(函数)都是要以func关键字开始的。所有的非func开头的都是非法的。所以你要写个方法就得func开头。

然后后面就是方法名main了。方法名有一个奇怪的特殊规定,就是如果方法名的首字母是小写,则包外部是无法访问的(其他文件夹的无法访问到这个文件夹下面的小写字母开头的方法)。所以一般都是首字母大写的,参看上面示例程序中的gin.Default() 这后面的Default()就是首字母大写。

再后面就是小括号了,这里就是传入参数的地方,现在没有参数,我们等以后要传参了再继续介绍。然后就是大括号。程序体就是卸载这个大括号里的。

这里介绍一下程序题的编写规则。

go没有像Java那样的以”;”结尾为一行程序,go的一个自然行就算是一行程序了。但是入参可以分行写,如第三行的

代码语言:javascript
复制
r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})

实际上是

代码语言:javascript
复制
r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{	"message": "pong",})})

但是为了方便观看,就将第二个入参(一个完整的匿名方法也可以作为参数传入进去)进行的“说人话”的格式化。

至此,这个示例的基础知识解释完了(后续还有很多基础知识哦~)。

后续:

你按f5试试看,是不是跑起来了,再访问浏览器http://localhost:8080/ping 是不是返回{“message”:”pong”}

[go语言开发]从0开始开发美图站——第三课

go语言开发从0开始开发美图站——第五课

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档