1 回答

TA貢獻1805條經驗 獲得超10個贊
定義一個接口
type Bin interface {
name() string
set([]byte) // maybe returning error
}
你將Bin只處理 s 。
type StructA struct { /* your code so far */ }
type StructB struct { /* your code so far */ }
func (a *StructA) set(b []byte) {
a.A = b[0]<<8 + b[1] // get that right, too lazy to code this for you
a.B = b[2]<<24 + b[3]<<16 + ...
}
// same for StructB
所以你的 StructA/B 現在是 Bins。
func makeBin(in myInput) Bin {
var bin Bin
if in.InputType == "a" {
bin = &StructA{}
} else {
bin = &StructB{}
}
bin.set(in.data) // error handling?
return bin
}
if如果您有兩種以上的類型:如果一個或制作一個微型注冊表(反映),請改用開關。
- 1 回答
- 0 關注
- 141 瀏覽
添加回答
舉報