Heim > häufiges Problem > Hauptteil

Verfügt die Go-Sprache über statische globale Variablen?

百草
Freigeben: 2023-07-11 15:37:36
Original
1795 Leute haben es durchsucht

Die Go-Sprache verfügt über keine statischen globalen Variablen. Sie verwendet eine flexiblere Methode, um den Bedarf an globalen Variablen zu decken, dh Variablen, die außerhalb der Funktion deklariert werden Sie sind im gesamten Paket sichtbar und können in jeder Funktion im Paket verwendet werden.

Verfügt die Go-Sprache über statische globale Variablen?

Die Betriebsumgebung dieses Artikels: Windows 10-System, go1.20-Version, DELL G3-Computer.

Die Go-Sprache verfügt über keine statischen globalen Variablen, sondern verwendet eine flexiblere Methode, um den Bedarf an globalen Variablen zu bewältigen. In der Go-Sprache werden globale Variablen normalerweise auf Paketebene deklariert, d. h. Variablen, die außerhalb von Funktionen deklariert werden. Diese globalen Variablen sind im gesamten Paket sichtbar und können in jeder Funktion im Paket verwendet werden.

Allerdings legt die Go-Sprache Wert auf Kapselung und Wartbarkeit und rät von der Verwendung globaler Variablen ab. Stattdessen fördert die Go-Sprache die Verwendung lokaler Variablen und Funktionsparameter zur Übergabe von Daten. Dieser Ansatz erleichtert die Organisation und das Testen von Code und kann Parallelitätsprobleme vermeiden, die durch die gemeinsame Nutzung von Daten zwischen mehreren Coroutinen entstehen können.

Wenn wir wirklich den globalen Status im gesamten Programm verwenden müssen, bietet die Go-Sprache eine sehr prägnante Möglichkeit, dies zu erreichen. Sie können eine Variable auf Paketebene definieren und sie als lokale Variable in einer Funktion auf Paketebene verwenden. Auf diese Weise wird die Variable bei jedem Aufruf der Funktion initialisiert, ihr Zustand bleibt jedoch unverändert. Da die Variable auf den Funktionsumfang beschränkt ist, können andere Funktionen nicht direkt darauf zugreifen, wodurch ein ähnlicher Effekt wie bei einer statischen globalen Variablen erzielt wird.

Die Go-Sprache verfügt über keine statischen Variablen, aber im tatsächlichen Prozess sind häufig ähnliche Effekte erforderlich, z. B. Konfigurationsinformationen usw. Die folgende Schreibmethode verwendet das Lesen und Schreiben des Benutzernamens (Benutzername) als Beispiel, um einen ähnlichen Effekt wie eine statische Variable zu erzielen.

Schauen Sie sich zunächst die Schreibmethode zum Aufrufen von main.go:

//在main函数中set好username的值,然后在其他函数中获取username的值
//main函数中进行set操作
func main() {
config.WithConfig().SetConfig()
initApp()
}
//该方法进行get操作
func initApp(){
config.WithConfig().GetConfig()
}
Nach dem Login kopieren
an. Schauen wir uns dann die Schreibmethode von config.go:

package config
//配置结构体
type Config struct {
username string
}
//关键在此,声明一个全局变量所有的读写操作实际上都是在操作c
var c *Config
func init() {
c = new(Config)
}
//方便链式操作
func WithConfig() *Config {
return c.WithConfig()
}
func (c *Config) WithConfig() *Config {
return c
}
//写
func (c *Config) SetConfig(name string) {
c.username = name
}
//读
func (c *Config) GetConfig() string {
return c.username
}
Nach dem Login kopieren
an

Das obige ist der detaillierte Inhalt vonVerfügt die Go-Sprache über statische globale Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage