导入包

时间:2017-06-15 16:00:15

标签: go

我正在尝试学习Go和我正在编写一些测试程序,但是在导入我的软件包时遇到了问题。我的Go工作区(在src目录中)($ GOPATH):

中有这个目录树
$GOPATH/src/gogoboy
│   main.go
│
├───cpu
│       flags.go
│       instructions.go
│       registers.go
│
└───memory
        memories.go

正如你所看到的那样,我现在有两个包:cpu和内存,这是我的主要内容。

package main

import (
    "gogoboy/cpu"
    "gogoboy/memory"
)

func main() {
    cpu.InitializeRegisters()
    memory.WriteRAM(0x00, 0xFF)
}

问题是:在相同级别的包内存中的包cpu是正确导入的,我可以使用每个cpu函数但是,包内存会引发错误:

.\main.go:10: undefined: memory.WriteRAM

我真的无法理解发生了什么,有人能给出解决方法吗?

文件记忆/ memories.go

package memory

const size uint16 = 0x2000

type Memories struct {
    RAM  [size]uint8
    VRAM [size]uint8
}

func (memory *Memories) WriteRAM(position uint16, value uint8) {
    memory.RAM[position] = value
}

1 个答案:

答案 0 :(得分:6)

你没有做你认为自己在做的事;看起来你想在内存结构上调用一个方法,但编译器正在内存包中寻找一个名为WriteRam的函数,因为你正在调用该方法。

在记忆中看看你的签名。:

func (memory *Memories) WriteRAM(position uint16, value uint8)

你有一个接收器func (memory *Memories)。这意味着为了调用此方法,您需要在某处声明memory.Memories变量。

我想你可能希望你的主要看起来像这样:

package main

import (
    "gogoboy/cpu"
    "gogoboy/memory"
)

func main() {
    cpu.InitializeRegisters()
    mem := memory.Memories{}
    mem.WriteRAM(0x00, 0xFF)
}