-
以下代码能否正确输出?如果能,请说明
func Add(a int, b int) int { c := a + b fmt.Println(a, b, c) return c } func TestAdd(t *testing.T) { a := 2 b := 4 defer Add(a, b) a = 3 defer Add(a, b) b = 5 }eg:
=== RUN TestAdd 3 4 7 2 4 6 --- PASS: TestAdd (0.00s) PASS Process finished with exit code 0 -
一个日志记录服务,每满100条返回一次,或者超出1s返回一次,该服务如何实现,请写出主要代码,要求使用 channel,sync.WaitGroup
eg:
func TestPrintLog(t *testing.T) { var ch = make(chan string, 100) var wg sync.WaitGroup wg.Add(2) go send(ch, &wg) go receive(ch, &wg) wg.Wait() fmt.Println("over") defer close(ch) } func send(ch chan string, wg *sync.WaitGroup) { for i := 0; i < 10000; i++ { ch <- "消息:" + strconv.Itoa(i) } wg.Done() } func receive(ch chan string, wg *sync.WaitGroup) { var loglist [100]string y := 0 for { if y >= 10000 { fmt.Println("y >= 10000",y) wg.Done() return } for i := 0; i < 100; i++ { select { case loglist[i] = <-ch: y++ case <-time.After(time.Second * 1): return } } fmt.Println(loglist) } }