go 語言動態新增 select case

2021-10-11 00:20:30 字數 930 閱讀 3560

go語言中傳統的select case必須固定寫死,即我們在編碼階段必須明確知道當前有幾個case,如下

select

如果我在編碼是不確定有幾個case,只在執行是才能知道,應該如何處理? 示例**如下

package main

import

("context"

"log"

"math/rand"

"reflect"

"sync"

)const

( numchannel int=10

)func

main()

cases =

(cases, ch_case)

} ctx, cancel := context.

withcancel

(context.

todo()

) cases =

(cases, reflect.selectcase

)var wg sync.waitgroup

wg.add(1)

gofunc()

else

return

} intval, ok := val.

inte***ce()

.(int)

if!ok

log.

printf

("channel %d receive value %d"

, chosen, intval)}}

()for i:=

0;i<

1000

;i++

cancel()

wg.wait()

}

go語言陣列動態擴容

package main import errors fmt 定義陣列結構體 type array struct 為陣列分配空間 func newarray capacity uint arrayelse 獲得陣列長度 func this array len int 判斷索引是否越界 func th...

Python是動態語言 動態新增或刪除屬性 方法

python元類 python裝飾器 python真正入門的鑑定標準 例項 class person def init self,name self.name name 定義乙個物件 mark person mark 終於修煉 了,好開森 print 報出我的大名 mark.name 直接新定義屬性...

Go語言之GO 語言常量

相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...