LaneBlog

蝼蚁虽小,也有梦想

PHP Socket服务 | PHP微信开发框架 | 开源博客

Golang的Switch与Select多个Case的逻辑和其他语言不同

Clicks: 8405 Date: 2017-08-16 21:40:58 Power By 李轩Lane

    

Golang的Switch与Select的逻辑,和其他语言不同。一不留神就是个坑。


多个Case中时,第一个case总是被抛弃的,同时也不会进到default里面。


如下的例子:

a := 2

switch a {

case 2:

case 3:

    fmt.Println("第一个case")

case 4, 5:

    fmt.Println("第二个case")

default:

    fmt.Println("Default")

}


当a=2时,没有任何输出。无论第一个打印,还是default都没有。

当a=3时,输出“第一个case”。

当a=4时,输出“第二个case”。

当a=5时,输出“第二个case”。

当a=其他值时,才输出default。


和switch一样,select是相同的逻辑和分支走向。


c1 := make(chan int, 10)

c2 := make(chan int, 10)

c1<-1

select{

case <-c1:

case <-c2:

    fmt.Println("进来了")

default:

    fmt.Println("default")

}

此时虽然c1有值,但是c1在select中是被抛弃的,所以无任何输出。

把c1<-1改成c2<-1,输出“进来了”。

当c1和c2都没有值,才会进入到default中。

另外,switch可以case1,2这样逗号分隔,同一行的case中写多个值,这种写法在select中是不行的。

Reply: avecenovi On 2020-02-04 21:08:43

http://mewkid.net/who-is-xandra/ - Amoxicillin 500 Mg <a href="http://mewkid.net/who-is-xandra/">Amoxicillin 500mg</a> ezx.ifrd.lanecn.com.kle.hy http://mewkid.net/who-is-xandra/

回复

Reply: baopefa On 2020-02-09 20:35:04

http://mewkid.net/who-is-xandra/ - Buy Amoxicillin <a href="http://mewkid.net/who-is-xandra/">Amoxicillin 500mg</a> ruu.dcgi.lanecn.com.dqe.mn http://mewkid.net/who-is-xandra/

回复

Reply: StevJaby On 2020-03-08 18:09:58

Priligy On Line http://apcialisle.com/# - Buy Cialis isotretinoin 10mg in germany discount store <a href=http://apcialisle.com/#>Buy Cialis</a> Cialis Oder Kamagra

回复

Reply: StevJaby On 2020-03-15 11:26:38

Antibiotics Secure Online Shopping http://apcialisle.com/# - Cialis Buy Levitra Online Canada Buy <a href=http://apcialisle.com/#>Buy Cialis</a> Ribavirin Buy Online Fast Shipping

回复

Reply: StevJaby On 2020-03-20 17:51:00

Discount Doxycycline Where To Buy https://apcialisle.com/# - buy cialis in canada Cheap Antabuse Online <a href=https://apcialisle.com/#>Cialis</a> Sildenafil

回复

Reply: Keytboarm On 2020-04-29 09:41:55

Commander Du Kamagra https://viacialisns.com/# - generic cialis no prescription Discount Doxycycline Acne <a href=https://viacialisns.com/#>Cialis</a> Sale Isotretinoin Low Price

回复

Reply: Doyle On 2020-06-06 09:05:00

Fastidious answer back in return of this issue with solid arguments and explaining the whole thing concerning that.

回复

Add Comment
©2014 www.lanecn.com , All rights reserved. Power By Li Xuan.  京ICP备14005030号