Apakah senario aplikasi corak tunggal di Golang?

WBOY
Lepaskan: 2024-03-05 10:51:03
asal
860 orang telah melayarinya

Apakah senario aplikasi corak tunggal di Golang?

Golang ialah bahasa pengaturcaraan taip statik sumber terbuka yang cekap, berkuasa dan ringkas. Di Golang, corak tunggal ialah corak reka bentuk yang biasa digunakan untuk memastikan kelas hanya mempunyai satu tika dan menyediakan titik akses global. Corak tunggal boleh memainkan peranan dalam banyak senario Berikut akan memperkenalkan beberapa senario yang sesuai untuk menggunakan corak tunggal dalam Golang, dan melampirkan contoh kod tertentu.

  1. Kumpulan sambungan pangkalan data
    Dalam aplikasi web berkonkurensi tinggi, kerap mencipta dan memusnahkan sambungan pangkalan data adalah sangat intensif sumber. Dengan menggunakan mod tunggal untuk mengurus kumpulan sambungan pangkalan data, anda boleh mengurangkan bilangan penciptaan sambungan dan masa pemusnahan dan meningkatkan prestasi sistem dengan berkesan. Berikut ialah contoh kumpulan sambungan pangkalan data yang mudah:
package database

import (
    "database/sql"
    "sync"
    _ "github.com/go-sql-driver/mysql"
)

var db *sql.DB
var once sync.Once

func GetDB() *sql.DB {
    once.Do(func() {
        var err error
        db, err = sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/dbname")
        if err != nil {
            panic(err)
        }
    })
    return db
}
Salin selepas log masuk
  1. Bacaan fail konfigurasi
    Dalam projek, biasanya perlu membaca fail konfigurasi untuk memulakan parameter sistem Dalam kes ini, anda boleh menggunakan mod tunggal untuk memastikan konfigurasi objek hanya dibaca Instantiate sekali. Berikut ialah contoh bacaan fail konfigurasi yang mudah:
package config

import (
    "github.com/spf13/viper"
    "sync"
)

type Config struct {
    DatabaseUsername string
    DatabasePassword string
}

var instance *Config
var once sync.Once

func GetConfig() *Config {
    once.Do(func() {
        viper.SetConfigFile("config.yaml")
        viper.ReadInConfig()

        instance = &Config{
            DatabaseUsername: viper.GetString("database.username"),
            DatabasePassword: viper.GetString("database.password"),
        }
    })
    return instance
}
Salin selepas log masuk
  1. Logger
    Melog masuk aplikasi adalah tingkah laku biasa, dan mod tunggal boleh memastikan contoh unik pembalak untuk mengelakkan penciptaan log berulang dan meningkatkan kecekapan pembalakan. Berikut ialah contoh logger mudah:
package logger

import (
    "log"
    "sync"
)

type Logger struct {
}

var instance *Logger
var once sync.Once

func GetLogger() *Logger {
    once.Do(func() {
        instance = &Logger{}
    })
    return instance
}

func (l *Logger) Log(message string) {
    log.Println(message)
}
Salin selepas log masuk

Di atas adalah beberapa senario dan contoh kod khusus yang sesuai untuk menggunakan mod tunggal dalam Golang Dalam pembangunan sebenar, anda boleh menggunakan mod tunggal secara fleksibel mengikut keperluan projek dan menambah baik kod. kebolehgunaan semula dan prestasi.

Atas ialah kandungan terperinci Apakah senario aplikasi corak tunggal di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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