本文整理匯總了Golang中log.Logger.Panic方法的典型用法代碼示例。如果您正苦於以下問題:Golang Logger.Panic方法的具體用法?Golang Logger.Panic怎麽用?Golang Logger.Panic使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類log.Logger
的用法示例。
在下文中一共展示了Logger.Panic方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Write
/****************************************************
*@function Write(serverAddr string)
*****************************************************
*@brief 本地輸入接口,綁定本地唯一發送端口
加開一個進程,用於發送心跳,維護在線狀態
*****************************************************
*@access Public
*****************************************************
*@param 無
*****************************************************
*@return 無
*****************************************************/
func (u *User) Write(groupCh chan string, logger *log.Logger) {
runtime.GOMAXPROCS(runtime.NumCPU())
//開啟進程,定時發送心跳,維護在線
go func(beatPort string, userName string) {
HeartBeat(beatPort, userName)
}(u.chatPort, u.name)
//接收用戶輸入並發送
inputCh := make(chan string)
go func(ch chan string) {
buffer := make([]byte, 1024)
for {
fmt.Printf("<%s>:", u.name)
count, err := os.Stdin.Read(buffer)
if err != nil {
fmt.Println(err)
}
str := strings.TrimSpace(strings.TrimSpace(string(buffer[:count])))
ch <- str
}
}(inputCh)
var mess Message
chatUdpAddr, _ := net.ResolveUDPAddr("udp", u.chatPort)
chatConn, err := net.DialUDP("udp", nil, chatUdpAddr)
for {
//並發邏輯,收到group命令後,輸入內容發送給client
/*******************************************************
存在一個問題是,與服務器之間的通信時在default中,
發送完group之後進入default中,等待下一個輸入
解決辦法:
******************************************************/
select {
case groupInfo := <-groupCh:
{
if groupInfo != "quit" {
//收到回話要求
groupList := strings.Split(groupInfo, "/")
remoteUdpAddr, _ := net.ResolveUDPAddr("udp", groupList[1])
remoteChatConn, err := net.DialUDP("udp", nil, remoteUdpAddr)
if err != nil {
logger.Panic(err)
fmt.Println(err)
}
//fmt.Printf("chat with client:%s\n",groupList[2])
encoder := json.NewEncoder(remoteChatConn)
quitFlag := false
var mess Message
for {
if quitFlag {
break
} else {
select {
case str := <-inputCh:
{
if str == "quit" {
quitFlag = true
mess = Message{
Cmd: "quit",
Sender: u.name,
Data: "",
Receiver: groupList[0],
}
} else {
mess = Message{
Cmd: "chat",
Sender: u.name,
Data: str,
Receiver: groupList[0],
}
}
err := encoder.Encode(mess)
if err != nil {
fmt.Println(err)
logger.Panic(err)
}
}
case groupInfo := <-groupCh:
{
if groupInfo == "quit" {
//退出會話,同時向服務器反饋
fmt.Printf("%s left the chatting\n", groupList[0])
quitFlag = true
remoteChatConn.Close()
mess = Message{
Cmd: "quit",
Sender: u.name,
Data: groupList[0],
Receiver: "server",
//.........這裏部分代碼省略.........