1. 代码结构
1 2 3 4 5 6 7 | wohu@wohu:~/GoCode/src$ tree demo/ demo/ ├── hello.go └── main.go 0 directories, 2 files wohu@wohu:~/GoCode/src$ |
1 2 3 4 5 6 7 | package main import "fmt" func hello() { fmt.Println("hello, world") } |
1 2 3 4 5 | package main func main() { hello() } |
2. 运行代码
1 2 3 | wohu@wohu:~/GoCode/src/demo$ go run main.go # command-line-arguments ./main.go:4:2: undefined: hello |
按道理讲同一个包内的函数是可以互相调用访问的,但是此处报错,提示
3. 问题原因
如下所示:
1 2 3 | wohu@wohu:~/GoCode/src/demo$ go run *.go hello, world wohu@wohu:~/GoCode/src/demo$ |
4. VSCode 中配置
在
1 2 3 4 5 6 7 8 | { "code-runner.executorMap": { "go": "cd $dir && go run .", }, "code-runner.executorMapByGlob": { "$dir\\*.go": "go" } } |
然后在
1 2 3 4 | [Running] cd "/home/wohu/GoCode/src/demo/" && go run . hello, world [Done] exited with code=0 in 0.177 seconds |
如果没有在
1 2 3 4 5 | [Running] go run "/home/wohu/GoCode/src/demo/main.go" # command-line-arguments src/demo/main.go:4:12: undefined: hello [Done] exited with code=2 in 0.158 seconds |
注意两者运行命令之间的区别:
1 | go run "/home/wohu/GoCode/src/demo/main.go |
和
1 | cd "/home/wohu/GoCode/src/demo/" && go run . |