Golang est un langage de programmation open source à typage statique, efficace, puissant et concis. Dans Golang, le modèle singleton est un modèle de conception couramment utilisé pour garantir qu'une classe n'a qu'une seule instance et fournit un point d'accès global. Le modèle singleton peut jouer un rôle dans de nombreux scénarios. Ce qui suit présentera quelques scénarios adaptés à l'application du modèle singleton dans Golang et joindra des exemples de code spécifiques.
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 }
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 }
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) }
Ci-dessus sont quelques scénarios et exemples de code spécifiques adaptés à l'application du mode singleton dans Golang. Dans le développement réel, vous pouvez appliquer de manière flexible le mode singleton en fonction des besoins du projet et améliorer le code. réutilisabilité et performance.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!