在同一个包中的函数可见性

huangapple go评论132阅读模式
英文:

function visibility in the same package

问题

如果我理解正确,一个包的所有源文件都存在于同一个作用域中。

我有两个文件 - room.go:

package main

func newRoom() *room {
	return &room{
		forward: make(chan []byte),
		join:    make(chan *client),
		leave:   make(chan *client),
		clients: make(map[*client]bool),
		tracer:  trace.Off(),
	}
}

main.go:

package main

func main() {    
	r := newRoom()

当我编译代码时,出现错误:

.\main.go:34: undefined: newRoom

为什么?

完整的代码在这里 https://github.com/matryer/goblueprints/tree/master/chapter1/chat

英文:

If I understand correctly - all the source files of a package live at the same scope.

I have two files - room.go:

package main

func newRoom() *room {
	return &room{
		forward: make(chan []byte),
		join:    make(chan *client),
		leave:   make(chan *client),
		clients: make(map[*client]bool),
		tracer:  trace.Off(),
	}
}

main.go:

package main

func main() {    
	r := newRoom()

When I am compiling the code I get the error:

.\main.go:34: undefined: newRoom

Why ?

Full code is here https://github.com/matryer/goblueprints/tree/master/chapter1/chat

答案1

得分: 2

在类Unix系统中,可以使用go run *.go命令运行,而在Windows系统中,尝试列出main包中的所有文件。

英文:

go run *.go will work in unix like system, and in Windows try to list all files in main package

huangapple
  • 本文由 发表于 2017年8月14日 00:40:56
  • 转载请务必保留本文链接:https://go.coder-hub.com/45662612.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定