Rumah > pembangunan bahagian belakang > Golang > Ketahui tentang lima pemalam paling popular di Golang: the big reveal

Ketahui tentang lima pemalam paling popular di Golang: the big reveal

WBOY
Lepaskan: 2024-01-16 09:12:13
asal
1197 orang telah melayarinya

Ketahui tentang lima pemalam paling popular di Golang: the big reveal

Rahsia pemalam Golang: Untuk memahami lima pemalam paling popular, contoh kod khusus diperlukan

Pengenalan: Dengan perkembangan pesat Golang dalam bidang pembangunan web, semakin ramai pembangun mula gunakan Golang untuk membangunkan aplikasi mereka sendiri. Bagi pembangun Golang, pemalam ialah alat penting untuk meningkatkan kecekapan pembangunan dan mengembangkan fungsi. Artikel ini akan membawa anda melalui lima pemalam paling popular di Golang dan memberikan contoh kod yang sepadan.

1. Pemalam rangka kerja Gin

Gin ialah salah satu rangka kerja web yang paling popular di Golang. Ia menyediakan cara yang cepat dan ringkas untuk membina aplikasi web berprestasi tinggi. Rangka kerja Gin menyediakan banyak pemalam perisian tengah yang boleh membantu pembangun melaksanakan pengesahan, pengelogan, pengendalian ralat dan fungsi lain.

Berikut ialah contoh yang menunjukkan cara menggunakan pemalam pengesahan rangka kerja Gin:

package main

import (
    "github.com/gin-gonic/gin"
    "github.com/appleboy/gin-jwt"
)

func main() {
    r := gin.Default()

    // 身份验证中间件
    authMiddleware, err := jwt.New(&jwt.GinJWTMiddleware{
        Realm:       "test zone",
        Key:         []byte("secret key"),
        Timeout:     time.Hour,
        MaxRefresh:  time.Hour,
        IdentityKey: "id",
        Authenticator: func(c *gin.Context) (interface{}, error) {
            var loginVals Login
            if err := c.ShouldBind(&loginVals); err != nil {
                return "", jwt.ErrMissingLoginValues
            }
            userID := loginVals.UserID
            password := loginVals.Password

            if (userID == "admin" && password == "admin") || (userID == "test" && password == "test") {
                return userID, nil
            }

            return nil, jwt.ErrFailedAuthentication
        },
        PayloadFunc: func(data interface{}) jwt.MapClaims {
            if v, ok := data.(string); ok {
                return jwt.MapClaims{"id": v}
            }
            return jwt.MapClaims{}
        },
        IdentityHandler: func(c *gin.Context) interface{} {
            claims := jwt.ExtractClaims(c)
            return claims["id"]
        },
    })

    if err != nil {
        log.Fatalf("Failed to create JWT middleware: %v", err)
    }

    // 使用身份验证中间件
    r.Use(authMiddleware.MiddlewareFunc())
    // 添加保护路由
    r.GET("/protected", authMiddleware.MiddlewareFunc(), func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{"data": "protected"})
    })

    // 启动服务器
    if err := r.Run(":8080"); err != nil {
        log.Fatal("Failed to start server: ", err)
    }
}
Salin selepas log masuk

2. Pemalam baris arahan Cobra

Cobra ialah rangka kerja baris arahan yang biasa digunakan di Golang, yang boleh membantu pembangun membina elegan aplikasi baris arahan. Ia menyediakan API yang ringkas dan mudah digunakan yang boleh membantu pembangun mentakrifkan arahan, subperintah, bendera, parameter, dsb.

Berikut ialah contoh yang menunjukkan cara menggunakan pemalam Cobra untuk mentakrifkan aplikasi baris arahan yang mudah:

package main

import (
    "log"

    "github.com/spf13/cobra"
)

func main() {
    rootCmd := &cobra.Command{
        Use:   "myapp",
        Short: "A simple CLI application",
        Run: func(cmd *cobra.Command, args []string) {
            // 执行应用程序的主要逻辑
            log.Println("Hello, Gopher!")
        },
    }

    // 添加子命令
    rootCmd.AddCommand(&cobra.Command{
        Use:   "greet",
        Short: "Greet the user",
        Run: func(cmd *cobra.Command, args []string) {
            log.Println("Hello, " + args[0])
        },
    })

    // 启动命令行应用程序
    if err := rootCmd.Execute(); err != nil {
        log.Fatal("Failed to start CLI application: ", err)
    }
}
Salin selepas log masuk

3. Pemalam pangkalan data GORM

GORM ialah perpustakaan ORM (Pemetaan Perhubungan Objek) paling popular di Golang API yang ringkas dan mudah digunakan untuk membantu pembangun mengendalikan pangkalan data dengan mudah.

Berikut ialah contoh yang menunjukkan cara menggunakan pemalam GORM untuk menyambung ke pangkalan data MySQL dan mencipta model data ringkas dan jadual pangkalan data:

package main

import (
    "log"

    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

type User struct {
    ID   uint
    Name string
    Age  int
}

func main() {
    dsn := "username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        log.Fatal("Failed to connect database: ", err)
    }

    // 迁移数据表
    err = db.AutoMigrate(&User{})
    if err != nil {
        log.Fatal("Failed to migrate database: ", err)
    }

    // 创建用户
    user := User{Name: "Alice", Age: 18}
    result := db.Create(&user)
    if result.Error != nil {
        log.Fatal("Failed to create user: ", result.Error)
    }
    log.Println("Created user:", user)

    // 查询用户
    var users []User
    result = db.Find(&users)
    if result.Error != nil {
        log.Fatal("Failed to query users: ", result.Error)
    }
    log.Println("Users:", users)
}
Salin selepas log masuk

4 Viper Profile Plugin

Viper ialah perpustakaan profil paling popular di Golang , yang menyokong berbilang format fail konfigurasi (seperti JSON, YAML, TOML, dll.) dan boleh membantu pembangun membaca dan menghuraikan fail konfigurasi dengan mudah.

Berikut ialah contoh yang menunjukkan cara menggunakan pemalam Viper untuk membaca dan menghuraikan fail konfigurasi dalam format JSON:

package main

import (
    "log"

    "github.com/spf13/viper"
)

func main() {
    viper.SetConfigFile("config.json")
    err := viper.ReadInConfig()
    if err != nil {
        log.Fatal("Failed to read config file: ", err)
    }

    data := viper.GetString("data")
    log.Println("Data:", data)

    dbHost := viper.GetString("database.host")
    dbPort := viper.GetInt("database.port")
    dbUser := viper.GetString("database.user")
    dbPassword := viper.GetString("database.password")
    log.Println("Database:", dbHost, dbPort, dbUser, dbPassword)
}
Salin selepas log masuk

5. Pemalam pembolehubah persekitaran Godotenv

Godotenv ialah perpustakaan pembolehubah persekitaran yang biasa digunakan di Golang , yang boleh membantu pembangun daripada Muatkan pembolehubah persekitaran daripada fail dan tetapkannya sebagai pembolehubah persekitaran untuk proses semasa.

Berikut ialah contoh yang menunjukkan cara menggunakan pemalam Godotenv untuk memuatkan pembolehubah persekitaran daripada fail .env:

package main

import (
    "log"

    "github.com/joho/godotenv"
)

func main() {
    err := godotenv.Load(".env")
    if err != nil {
        log.Fatal("Failed to load .env file: ", err)
    }

    dbHost := os.Getenv("DB_HOST")
    dbPort := os.Getenv("DB_PORT")
    dbUser := os.Getenv("DB_USER")
    dbPassword := os.Getenv("DB_PASSWORD")
    log.Println("Database:", dbHost, dbPort, dbUser, dbPassword)
}
Salin selepas log masuk

Kesimpulan: Di atas ialah pengenalan terperinci dan kod contoh untuk lima pemalam paling popular di Golang. Sama ada pembangunan web, pembangunan aplikasi baris arahan atau operasi pangkalan data, pemalam ini boleh membantu pembangun menyediakan penyelesaian yang lebih cekap. Saya harap artikel ini akan membantu anda memahami pemalam Golang!

Atas ialah kandungan terperinci Ketahui tentang lima pemalam paling popular di Golang: the big reveal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan