Go(golang)是否有可能包含来自不同文件夹的几个.go文件的包?
我试图在主文件夹中创建一个子文件夹,编译器说它找不到定义("未定义"错误).当所有文件都在同一文件夹中时,编译不会出错.
谢谢.
我在结构中设置了值,但没有设置.因此调用这些方法,而不是并行调用.怎么可能?这是golang,忘了说.
如果我在"start"方法(而不是"init"方法)中将代码更改为设置值,则它可以正常工作; 但是"init"方法中的设置值失败.看起来很奇怪.
package main
import (
"log"
"net/http"
"time"
)
type tServer struct {
ipAddress string
port string
server http.Server
}
var server tServer
func main() {
server.ipAddress = "0.0.0.0"
server.port = "12345"
server.init()
server.start()
time.Sleep(time.Second * 5)
}
func (srv tServer) init() {
srv.server.Addr = srv.ipAddress + ":" + srv.port
log.Println("srv.server.Addr=", srv.server.Addr) ////////////////////
}
func (srv tServer) start() {
log.Println("srv.server.Addr=", srv.server.Addr) ////////////////////
go srv.startServerRoutine()
}
func (srv tServer) startServerRoutine() {
log.Println("Server started at", srv.server.Addr) //
err := srv.server.ListenAndServe() …Run Code Online (Sandbox Code Playgroud) 语言是'Go'('Golang')。
该函数initApp正在接收一个指向对象的指针(Go 中的“结构”)。在函数内部,我创建了一个新的对象指针并初始化了对象的值。打印和调试器都表明在函数返回之前一切都很好。但是在返回之后,作为函数参数的指针具有与函数调用之前相同的空值。
为什么呢?
代码在这里:https : //pastebin.com/0Gww2CQC
// ptr.go.
package main
import "fmt"
type ClassX struct {
Name string
Age int
}
func main() {
var obj *ClassX
initApp(obj)
fmt.Println(obj)
return
}
func initApp(x *ClassX) {
tmp := NewClassXObject()
x = tmp
fmt.Println("tmp:", tmp)
fmt.Println("x:", x)
}
func NewClassXObject() *ClassX {
x := new(ClassX)
x.init()
return x
}
func (o *ClassX) init() {
o.Age = 123
o.Name = "John"
}
Run Code Online (Sandbox Code Playgroud)
输出如下:
tmp: &{John 123}
x: &{John 123} …