go 基础 | 青训营笔记

41 阅读4分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 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

www.cloudwego.io/zh/docs/kit…

  • 使用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 方法和路径参数等。