crypto/rand
包提供了生成加密安全的伪随机数的功能。
goCopy codepackage main
import (
"crypto/rand"
"encoding/hex"
"fmt"
)
func main() {
randomBytes := make([]byte, 8)
_, err := rand.Read(randomBytes)
if err != nil {
panic(err)
}
randomHex := hex.EncodeToString(randomBytes)
fmt.Println("Random Hex:", randomHex)
}
20. os/exec - 执行外部命令
os/exec
包允许你在Go程序中执行外部命令。
goCopy codepackage main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("ls", "-l")
output, err := cmd.Output()
if err != nil {
panic(err)
}
fmt.Println("Command output:")
fmt.Println(string(output))
}
21. html/template - HTML模板
html/template
包提供了用于安全地渲染HTML模板的功能。
goCopy codepackage main
import (
"html/template"
"os"
)
type Person struct {
Name string
Age int
}
func main() {
tmpl := template.Must(template.New("example").Parse("Hello, {{.Name}}! You are {{.Age}} years old.n"))
person := Person{"Alice", 30}
err := tmpl.Execute(os.Stdout, person)
if err != nil {
panic(err)
}
}
22. github.com/spf13/cobra - 命令行应用程序框架
Cobra 是一个用于构建强大的命令行应用程序的库。
代码语言:javascript复制goCopy codepackage main
import (
"fmt"
"github.com/spf13/cobra"
)
func main() {
var rootCmd = &cobra.Command{Use: "app"}
var cmdHello = &cobra.Command{
Use: "hello",
Short: "Prints 'Hello, Gopher!'",
Run: func(cmd *cobra.Command, args []string) {
fmt.Println("Hello, Gopher!")
},
}
rootCmd.AddCommand(cmdHello)
rootCmd.Execute()
}
23. github.com/go-chi/chi - 轻量级HTTP路由器
Chi 是一个轻量级、灵活的HTTP路由器。
代码语言:javascript复制goCopy codepackage main
import (
"net/http"
"github.com/go-chi/chi"
)
func main() {
r := chi.NewRouter()
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello, Chi!"))
})
http.ListenAndServe(":8080", r)
}
24. github.com/go-playground/validator - 结构体验证器
Validator 提供了用于验证结构体字段的功能。
代码语言:javascript复制goCopy codepackage main
import (
"fmt"
"github.com/go-playground/validator/v10"
)
type User struct {
Name string `validate:"required"`
Email string `validate:"required,email"`
Age int `validate:"gte=0,lte=130"`
}
func main() {
v := validator.New()
user := User{Name: "John", Email: "john@example", Age: 25}
err := v.Struct(user)
if err != nil {
for _, err := range err.(validator.ValidationErrors) {
fmt.Println(err.Namespace(), err.Field(), err.Tag())
}
}
}
这些是另一批基础常用的Go语言库及其用法,包括生成随机数、执行外部命令、HTML模板、命令行应用程序框架、HTTP路由器和结构体验证器等方面。根据项目的具体需求,你可以选择适用的库来进行开发。