簡體   English   中英

在go中聲明空類型

[英]declaring empty types in go

對於給定類型的Data ,我想定義一組過濾器,每個過濾器以某種方式處理Data 有些過濾器只需要處理數據,其他過濾器可能需要額外的參數。

type Data struct {
    ...
}

我希望能夠定義過濾器列表,並將它們按順序應用於Data實例。 為了實現這一點,我定義了一個Filter接口:

type Filter interface {
    Apply (d *Data) error
}

要定義過濾器,我所要做的就是創建一個新類型並為其定義Apply方法。

現在,假設我有一個不需要任何其他信息的過濾器。 將它定義為空struct是一種好習慣嗎?

type MySimpleFilter struct {}

func (f *MySimpleFilter) Apply (d *Data) {
    ...
}

我認為如果你沒有使用Field,這是一個很好的做法,特別是與使用其他類型(即type MySimpleFilter int )相比,因為空結構不使用空格:

https://codereview.appspot.com/4634124

它仍然可以實現接口契約(因此在某些情況下可能比功能方法更有用)。

當使用您沒有使用該值的map[string]struct{} (即map[string]struct{} )時,這也是一個很好的習慣用法。 有關詳細信息,請參閱此討

https://groups.google.com/forum/?fromgroups=#!topic/golang-nuts/lb4xLHq7wug

這是一個沒有明確答案的問題,因為這是一個品味問題。 我認為這是一個很好的做法,因為它使MySimpleFilter與其他過濾器對稱,這使得理解代碼變得更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM