Ich lerne Go und fand diesen Code:Kann Array in Go Methoden haben?
// newTestBlockChain creates a blockchain without validation.
func newTestBlockChain(fake bool) *BlockChain {
db, _ := ethdb.NewMemDatabase()
gspec := &Genesis{
Config: params.TestChainConfig,
Difficulty: big.NewInt(1),
}
gspec.MustCommit(db)
engine := ethash.NewFullFaker()
if !fake {
engine = ethash.NewTester()
}
blockchain, err := NewBlockChain(db, gspec.Config, engine, vm.Config{})
if err != nil {
panic(err)
}
blockchain.SetValidator(bproc{})
return blockchain
}
Meine Frage ist:
gspec
Variable wird als assoziatives Array von 2 Werten mit Schlüssel erstellt 'Config' und Schlüssel 'Schwierigkeit ', das ist klar.
Aber dann sehe ich diese Zeile:
gspec.MustCommit(db)
und ich verstehe nicht, wo wurde die 'MustCommit()' Funktion deklariert? Hat ein Array in Go auch Methoden? Komisches Zeug. Nur Klasse kann Methoden in meinem Verständnis der Softwareentwicklung haben und hier sehe ich ein Array, das Funktionen (Methoden) hat. Was ist mit diesem Code los?
"Nur Klassenmethoden haben können" - Go haben keine Klassen. – Flimzy