go坑记录

230 阅读1分钟
show code


package main

import (
    "fmt"
    "pressure/game"
    "sync"
)

var waitGroup sync.WaitGroup 
func main(){
    waitGroup.Add(1) 
    go game.ConnSocket(serverAddr, waitGroup)            //坑位, waitgroutp在此处传入的为值
    waitGroup.Wait()

    fmt.Println("main DONE!!!")
}


package game

import (
    "fmt"
    "net"
    "strconv"
    "strings"
    "sync"
)

var gameWait sync.WaitGroup

func ConnSocket(serverAddr string, wait sync.WaitGroup) {
    var err error
    Conn, err = net.Dial("tcp", serverAddr)
    if err != nil {
        fmt.Println("Error connected:", err.Error())
        wait.Done()
        return
    }

    gameWait = wait                                    //赋值传递,并非地址

    fmt.Println("connected OK:", Conn.RemoteAddr())
    go readMessage()
}

func readMessage() {
    fmt.Println("readMessage:")
    for {
        if OK:=dosomething(),OK{
            gameWait.Done()
        }
    }
}