首頁 >後端開發 >Golang >golang全域結構體初始化

golang全域結構體初始化

WBOY
WBOY轉載
2024-02-12 09:33:081303瀏覽

golang全域結構體初始化

php小編草莓今天為大家介紹Golang中的全域結構體初始化。在Golang中,可以使用結構體來組織和管理數據,而全域結構體初始化是一種方便且常用的方式。透過全域結構體初始化,我們可以在程式啟動時對結構體進行初始化,避免每次使用結構體時都需要手動初始化的麻煩。以下我們將詳細介紹全域結構體初始化的具體方法和注意事項,幫助大家更能理解並使用這項功能。

問題內容

我想宣告一個屬於某個套件的全域結構變數並初始化它。

我有以下目錄結構:

main
├── symbol
|   ├── symbol.go
|   └── comma.go
├── main.go
└── go.mod

symbol.go

package symbol

type symbol struct{
    name string
    format string
}

comma.go

package symbol

var comma = symbol{}

comma.name = "comma"
comma.format = ","

main.go

package main
import "fmt"
import "github.com/.../symbol"

func main() {
    s := symbol.Comma
    fmt.Println(s.Name)
}

當我運行它時,它顯示:

syntax錯誤:函數體外部的非宣告語句

我該如何解決這個問題?

解決方法

宣告語句是套件層級唯一允許的語句類型。聲明

comma.name = "comma"
comma.format = ","

是賦值語句。賦值不是聲明。

有兩種方法可以解決這個問題。第一種也是首選方法是使用複合文字來初始化變數宣告中的值。

var comma = symbol{name: "comma", format: ","}

第二種方法是將賦值語句移至 init 函數:

func init() {
    Comma.Name = "Comma"
    Comma.Format = ","
}

init函數在套件初始化時自動執行。

以上是golang全域結構體初始化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除