Goをいじり始めてから約1週間になりますが、非常に感銘を受けています。しかし、まだ頭を悩ませることができないいくつかの問題があります。
現在の主な問題は、接続処理コードが機能しているときに、接続ループとは独立したメインゲームループを追加したいということです。どのようにこれを行うのですか?
package main
import (
"fmt"
"net"
"strconv"
"time"
"galaxy"
)
const PORT = 5555
func main() {
playerFactory := galaxy.NewPlayerFactory()
server, err := net.Listen("tcp", ":" + strconv.Itoa(PORT))
if server == nil {
panic("listen failed: " + err.Error() + "\n")
} else {
defer server.Close()
}
// main loop
go func() {
for {
// entity updates
playerFactory.Update()
}
}() // adding this just blocks everything after the goroutine
// connection handling
for {
conn, err := server.Accept()
if err != nil {
fmt.Printf("client error: %s\n", err.Error())
} else {
playerFactory.CreatePlayer(conn)
}
}
}
現在の記述方法では、メインループが実行されますが(これは私が追加しようとしている部分です)、接続処理コードは無視されます。これは、チャネルを使用して制御を渡す場所ですか?解決策は、経験豊富なGoプログラマーには明らかだと思います。あなたの回答を楽しみにしています。