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

golang全域結構體初始化

WBOY
發布: 2024-02-12 09:33:08
轉載
1297 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板