2 回答

TA貢獻1802條經驗 獲得超6個贊
好吧,這是我會給出的答案。
我會創建函數來創建新的 StudentStat/EmployeeStat 來正確設置函數:Pending
func NewStudentStats(name, language string, tarticles, particles int) *StudentStats {
stats := &StudentStats{
name: name,
language: language,
Tarticles: tarticles,
Particles: particles,
}
// setting the correct Pending function to the Stats struct inside:
stats.Stats.Pending = stats.Pending
return stats
}
有關完整代碼,請參閱工作 Playground 示例。
還要注意我對Go中面向對象編程的評論。

TA貢獻1860條經驗 獲得超9個贊
問題在于您的統計信息類型嵌入了結構:Stats
type StudentStats struct {
Stats
// [..]
}
這一切都很好,但是您的類型具有字段,這是您正在調用的函數:StatsPendingProcess()
type Stats struct {
Pending func(int, int) int
}
func (g *Stats) Process() {
fmt.Println("Pending articles: ", g.Pending(1, 2))
}
但是沒有任何東西會給 賦予值,所以它是,并且會恐慌。Pendingnilg.Pending(1, 2)
我不完全確定你的代碼的意圖是什么,但是要么實現為上的方法,要么在創建結構時分配一個值:Pending()Stats
sResult := StudentStats{
Stats: Stats{
Pending: func(a, b int) int {
// Do something.
}
},
// [..]
}
- 2 回答
- 0 關注
- 143 瀏覽
添加回答
舉報