package vm type Instruction struct { OpCode OpCodeType Reserved [4]byte Operands [2]*Operand opHandler opHandler `struc:"skip"` } func (instr *Instruction) Copy() *Instruction { ret := &Instruction{ OpCode: instr.OpCode, } for i, opr := range instr.Operands { ret.Operands[i] = opr.Copy() } return ret }