Golang優雅初始化結構體

2021-09-02 11:26:18 字數 1125 閱讀 2155

所謂優雅,即能夠讓擴充套件性更好,便於在後期擴充套件的時候,減少開發時間,以及更加易於新增功能。具體的實現,就是一次對於閉包的靈活使用(閱go-micro)。

從示例**main.go、service.go、options.go的實現來說明。

main.go

package main

func main()

service.go

package main

import

"fmt"

type service inte***ce

type service struct

func newservice

(opts ...option) service

}func

(p *service)

output()

options.go

package main

type option func

(*options)

type options struct

var(

defaultname =

"defaultname"

defaultage =10)

// 如果沒有對指定成員變數初始化,就使用預設引數

func newoptions

(opts ...option)

*options

for _, o :

= range opts

return options

}// 初始化name

func name

(name string) option

}// 初始化age

func age

(age int) option

}

如果後期需要增加引數,只需要在options中增加乙個字段,並且增加乙個字段對應的函式即可。不需要類似傳統寫法再去修改newoptions的入參以及內部的賦值操作。

具體的使用場景,視情況而定,因為用而用就不好了

結構體初始化 指定初始化

參考 c99支援結構的指定初始化專案,其語法與陣列的指定初始化專案近似。只是,結構的指定初始化專案使用點運算子和成員名 而不是方括號和索引值 來標識具體的元素。例如,只初始化book結構的成員value,可以這樣做 struct book surprise 可以按照任意的順序使用指定初始化專案 st...

結構體初始化

結構體變數初始化 tag 結構體,結構體變數,結構體變數宣告,結構體變數初始化,結構體變數引用,結構體成員變數引用 text c語言中引用變數的基本原則是在使用變數前,需要對變數進行定義並初始化。其方法是在定義變數的同時給其一初始值。結構體變數的初始化,遵循相同的規律。簡單變數的初始化形式如下 資料...

golang初始化結構體的幾種方式(對比)

參考 僅作學習用途 結構體是眾多屬性的集合,每個屬性都有其型別和值。在對結構體的使用中,結構體的初始化必不可少,本文列舉go中主要的幾種初始化方法及示例,最後從記憶體分配角度分析了其區別。type person struct func main 方式1 func main 方式2 func main...