Rumah  >  Artikel  >  Adakah bahasa Go mempunyai pembolehubah global statik?

Adakah bahasa Go mempunyai pembolehubah global statik?

百草
百草asal
2023-07-11 15:37:361792semak imbas

Bahasa Go tidak mempunyai pembolehubah global statik Ia menggunakan cara yang lebih fleksibel untuk mengendalikan keperluan pembolehubah global biasanya diisytiharkan pada tahap pakej, iaitu, pembolehubah global ini digunakan sepanjang Mereka kelihatan dalam pakej dan boleh digunakan dalam mana-mana fungsi dalam pakej.

Adakah bahasa Go mempunyai pembolehubah global statik?

Persekitaran pengendalian artikel ini: sistem Windows 10, versi go1.20, komputer DELL G3.

Bahasa Go tidak mempunyai pembolehubah global statik, ia menggunakan cara yang lebih fleksibel untuk mengendalikan keperluan pembolehubah global. Dalam bahasa Go, pembolehubah global biasanya diisytiharkan pada peringkat pakej, iaitu pembolehubah yang diisytiharkan fungsi luar. Pembolehubah global ini boleh dilihat di seluruh pakej dan boleh digunakan dalam mana-mana fungsi dalam pakej.

Walau bagaimanapun, bahasa Go menekankan pengkapsulan dan kebolehselenggaraan serta tidak menggalakkan penggunaan pembolehubah global. Sebaliknya, bahasa Go menggalakkan penggunaan pembolehubah tempatan dan parameter fungsi untuk menghantar data. Pendekatan ini lebih kondusif untuk organisasi dan ujian kod, serta boleh mengelakkan masalah konkurensi yang mungkin timbul daripada perkongsian data antara berbilang coroutine.

Apabila kita benar-benar perlu menggunakan keadaan global sepanjang keseluruhan program, bahasa Go menyediakan cara yang sangat ringkas untuk mencapainya. Anda boleh menentukan pembolehubah pada peringkat pakej dan menggunakannya sebagai pembolehubah setempat dalam fungsi peringkat pakej. Dengan cara ini, pembolehubah dimulakan setiap kali fungsi dipanggil, tetapi keadaannya kekal tidak berubah. Oleh kerana pembolehubah dihadkan kepada skop fungsi, fungsi lain tidak boleh mengaksesnya secara langsung, mencapai kesan yang serupa dengan pembolehubah global statik.

Bahasa Go tidak mempunyai pembolehubah statik, tetapi kesan yang serupa selalunya diperlukan dalam proses sebenar, seperti maklumat konfigurasi, dsb. Kaedah penulisan berikut menggunakan membaca dan menulis nama pengguna (nama pengguna) sebagai contoh untuk mencapai kesan yang serupa dengan pembolehubah statik.

Mula-mula lihat kaedah penulisan panggilan di main.go:

//在main函数中set好username的值,然后在其他函数中获取username的值
//main函数中进行set操作
func main() {
config.WithConfig().SetConfig()
initApp()
}
//该方法进行get操作
func initApp(){
config.WithConfig().GetConfig()
}

Kemudian mari kita lihat kaedah penulisan 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
}

Atas ialah kandungan terperinci Adakah bahasa Go mempunyai pembolehubah global statik?. 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