Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah senario aplikasi corak tunggal di Golang?

Apakah senario aplikasi corak tunggal di Golang?

WBOY
WBOYasal
2024-03-05 10:51:03853semak imbas

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
}
  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
}
  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)
}

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!

Kenyataan:
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