Does Go language have static global variables?
Jul 11, 2023 pm 03:37 PMThe Go language does not have static global variables. It uses a more flexible way to handle the need for global variables. Global variables are usually declared at the package level, that is, variables declared outside the function. These Global variables are visible throughout the package and can be used in any function in the package.
The operating environment of this article: Windows 10 system, go1.20 version, DELL G3 computer.
Go language does not have static global variables, it uses a more flexible way to handle the needs of global variables. In Go language, global variables are usually declared at the package level, that is, variables declared outside functions. These global variables are visible throughout the package and can be used in any function in the package.
However, the Go language emphasizes encapsulation and maintainability and discourages the use of global variables. Instead, the Go language encourages the use of local variables and function parameters to pass data. This approach is more conducive to code organization and testing, and can avoid concurrency problems that may arise from sharing data between multiple coroutines.
When we really need to use global state throughout the entire program, the Go language provides a very concise way to achieve it. You can define a variable at the package level and use it as a local variable in a package-level function. This way, the variable is initialized each time the function is called, but its state remains unchanged. Because the variable is restricted to the scope of the function, other functions cannot directly access it, thus achieving an effect similar to a static global variable.
The Go language does not have static variables, but similar effects are often needed in the actual process, such as configuration information, etc. The following writing method uses reading and writing username (username) as an example to achieve an effect similar to a static variable.
First look at the writing method of calling in main.go:
//在main函數(shù)中set好username的值,然后在其他函數(shù)中獲取username的值 //main函數(shù)中進行set操作 func?main()?{ config.WithConfig().SetConfig() initApp() } //該方法進行get操作 func?initApp(){ config.WithConfig().GetConfig() }
Next, let’s look at the writing method of 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 }
The above is the detailed content of Does Go language have static global variables?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The problem of using RedisStream to implement message queues in Go language is using Go language and Redis...

What should I do if the custom structure labels in GoLand are not displayed? When using GoLand for Go language development, many developers will encounter custom structure tags...

Which libraries in Go are developed by large companies or well-known open source projects? When programming in Go, developers often encounter some common needs, ...

Do I need to install an Oracle client when connecting to an Oracle database using Go? When developing in Go, connecting to Oracle databases is a common requirement...

Resource management in Go programming: Mysql and Redis connect and release in learning how to correctly manage resources, especially with databases and caches...

Detailed explanation of PostgreSQL database resource monitoring scheme under CentOS system This article introduces a variety of methods to monitor PostgreSQL database resources on CentOS system, helping you to discover and solve potential performance problems in a timely manner. 1. Use PostgreSQL built-in tools and views PostgreSQL comes with rich tools and views, which can be directly used for performance and status monitoring: pg_stat_activity: View the currently active connection and query information. pg_stat_statements: Collect SQL statement statistics and analyze query performance bottlenecks. pg_stat_database: provides database-level statistics, such as transaction count, cache hit

Interfaces and polymorphism in Go: Clarifying common misunderstandings Many Go beginners often connect the concepts of "duck type" and "polymorphism" with Go...

Go pointer syntax and addressing problems in the use of viper library When programming in Go language, it is crucial to understand the syntax and usage of pointers, especially in...