这是我参与「第五届青训营」伴学笔记创作活动的第 19 天
fileServer := http.FileServer(http.Dir("./static"))
http.Handle("/", fileServer)
go的main函数里这2句话是在干什么?
这两句话是用来启动一个简单的静态文件服务器,将位于当前目录下名为 "static" 的文件夹作为静态文件的根目录,监听来自客户端的HTTP请求,并将其映射到相应的静态文件或目录。
具体来说,第一行代码创建了一个http.FileServer对象,该对象将静态文件的根目录设置为 "./static",并返回一个用于处理HTTP请求的Handler。第二行代码使用http.Handle函数将该Handler注册到了默认的HTTP Server上,并指定监听的URL为根目录("/"),因此所有的HTTP请求都将被映射到该Handler上,进而返回相应的静态文件或目录。
创建对象
go语言是面向对象的吗?它是怎么创建对象的?
Go语言是一门面向对象的编程语言,但与其他面向对象的编程语言(如Java、C++)不同的是,它采用了更加轻量级的对象模型。
在Go语言中,对象的概念被称为“结构体”(struct),它是一种用户自定义的复合类型。结构体可以包含多个字段(field),每个字段可以是不同类型的变量,它们被封装在一个结构体中。可以通过声明一个结构体类型,然后创建该类型的变量来创建一个对象。例如:
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Bob", Age: 30}
fmt.Println(p.Name, p.Age)
}
上面的代码定义了一个名为Person的结构体类型,它包含了两个字段:Name和Age。然后在main函数中,我们创建了一个名为p的Person对象,并为其设置了Name和Age的值。最后,我们输出了p的Name和Age字段的值。
此外,Go语言中的对象创建方式也包括使用new函数来动态分配一个类型的内存空间,并返回一个指向该内存空间的指针。例如:
p := new(Person)
p.Name = "Alice"
p.Age = 25
上面的代码创建了一个新的Person对象,并将其指针赋值给了p变量。然后,我们可以通过p指针访问该对象的字段,并为其设置值。
变量声明
go语言中的:=是什么?
在 Go 语言中,":=" 是一个短变量声明操作符,用于创建一个新的变量并将其初始化为右侧表达式的结果。这个操作符可以用于函数内部的局部变量声明。
例如,下面的代码展示了如何使用 ":=" 来声明一个字符串变量 s 并将其初始化为 "Hello, World!":
func main() {
s := "Hello, World!"
fmt.Println(s)
}
在这个例子中,变量 s 被声明为字符串类型,它的值是 "Hello, World!"。使用 ":=" 操作符可以让 Go 编译器自动推断变量的类型,因此你不需要显式地指定变量的类型。
需要注意的是,":=" 操作符只能在函数内部使用,而在函数外部声明变量必须使用 var 关键字。
Gorm
gorm.cn/zh_CN/docs
- 用tx而不是db
Kitex
- 使用IDL定义服务与接口
kitex可以扩展ETCD、Nacos、Zookeeper等
Herts
是go的HHTP框架
- h.Spin() 自旋
- 2个上下文。第一个是传递原信息,第二个处理请求
c content.Context, ctx *app.RequestContext
Herts路由
- Hertz提供了Bind、Validate、BindAndValidate函数用于进行参数绑定和校验
- http框架里路由是什么意思?
在 HTTP 框架中,路由是指将来自客户端的 HTTP 请求映射到服务器上的处理程序(通常是一个函数或方法)的过程。它允许你指定客户端请求的特定 URL 路径和 HTTP 方法与相应的处理程序相关联,以便服务器能够正确地处理请求。
例如,一个简单的路由规则可以是:当客户端发送 GET 请求到 URL 路径 "/hello" 时,服务器将返回一个包含 "Hello, World!" 的响应。在 Go 语言中,可以使用一些流行的 HTTP 框架(如 Gin、Echo 或 Go net/http 包)来设置路由规则。
以下是一个使用 Gin 框架设置路由的示例:
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/hello", func(c *gin.Context) {
c.String(200, "Hello, World!")
})
r.Run(":8080")
}
在这个例子中,我们使用 Gin 框架创建一个 HTTP 服务器,并将 GET 请求到 "/hello" 路径与一个处理函数相关联。当客户端发送 GET 请求到 "/hello" 时,服务器将调用处理函数并返回一个包含 "Hello, World!" 的响应。使用 Gin 框架可以很容易地设置更复杂的路由规则,例如支持多个 HTTP 方法和路径参数等。