Gomall项目 - 01

240 阅读3分钟

开发环境

Go安装

scoop install go

go version

vscode插件

  • Go
  • Golang Tools
  • Docker
  • MySQL
  • Material Icon Theme
  • YAML
  • vscode-proto3
  • Makefile Tools

终端

Oh My Zsh (Linux)

Plugins

  • zsh-syntax-highlighting //语法高亮
  • zsh-autosuggestions //常用命令和历史输入进行补全

项目地址

创建文件夹Gomall

mkdir Gomall
cd Gomall

Hertz - 创建一个hello-world HTTP 项目

Hertz

Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttpginecho 的优势,并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。

mkdir hello-world
cd ./hello-world/

//初始化go mod
go mod init github.com/yourusername/yourrepository

//引入Hertz
go get -u github.com/cloudwego/hertz

go mod tidy

\\添加main.go后
go run main.go

在.\hello_world\中添加main.go文件

package main

  

import (

    "context"

  

    "github.com/cloudwego/hertz/pkg/app"

    "github.com/cloudwego/hertz/pkg/app/server"

    "github.com/cloudwego/hertz/pkg/protocol/consts"

)

  

func main() {

    h := server.Default()

  

    h.GET("/hello", func(ctx context.Context, c *app.RequestContext) {

        c.Data(consts.StatusOK, consts.MIMETextPlain, []byte("Hello, World!"))

    })

  

    h.Spin()

}

用到的命令

go mod tidy

go mod tidy 是一个 Go 命令,用于清理 go.mod 文件和 go.sum 文件。它会移除不再需要的依赖项,并添加缺失的依赖项。具体来说,它会执行以下操作:

  1. 移除 go.mod 文件中未使用的依赖项。
  2. 添加 go.mod 文件中缺失的依赖项。
  3. 更新 go.sum 文件以匹配 go.mod 文件中的依赖项。

出现的问题

网络问题

go get报错 tcp: EOF
go: module github.com/cloudwego/hertz: Get "https://proxy.golang.org/github.com/cloudwego/hertz/@v/list": proxyconnect tcp: EOF

aofei:首先,Go HTTP client 会用到你的 https_proxy 配置,然后你需要知道的是 Go HTTP client 默认会启用 TLS 证书检查,如果你们公司所配的这个 https_proxy 并不包含一个公认可靠的 TLS 证书,那么就会被阻止,比如 https_proxy 是 https://192.168.0.1:1443 这种时 Go HTTP client 就无法通过那行请求。或者,有些教程会导致大家误用 https_proxy,比如把它设置成了跟 http_proxy 完全一样的非 HTTPS 代理,即不包含任何 TLS 层,这样也是不行的。

解决方法

删除https_proxy

Remove-Item Env:https_proxy 

//重新设置如下
$env:HTTPS_PROXY = "https://ip:port"

//通常会有timeout问题,需要换源
go env -w GOPROXY=https://goproxy.cn,direct

总结

在这次学习中,我们搭建了一个 Go 开发环境,并创建了一个简单的 Hertz HTTP 项目。首先,通过 scoop 安装了 Go,并验证了安装。然后,在 VS Code 中安装了多个插件,如 Go、Golang Tools、Docker 等,以提升开发效率。我们还配置了 Oh My Zsh 终端,并添加了语法高亮和命令补全插件。

接下来,我们创建了一个名为 Gomall 的项目文件夹,并在其中初始化了一个 Hertz 项目。通过 go mod init 初始化 Go 模块,并使用 go get 引入 Hertz 框架。我们编写了一个简单的 main.go 文件,定义了一个 /hello 路由,返回 "Hello, World!"。

在过程中,我们遇到了网络问题,导致 go get 命令失败。通过删除 https_proxy 环境变量并设置新的代理源 goproxy.cn,成功解决了问题。最后,我们使用 go mod tidy 清理和更新了依赖项,确保项目依赖的完整性和正确性。