Golang中Switch的使用
跟一般語言的Switch有點不一樣,Golang在使用兩個case的時候,是第一個是不生效的。
如下的程式碼
switch (type) {
case 1:
case 2:
return "a";
case 3:
return "b"
default:
return "c"
}
在Java中,輸入1,2都是返回a,輸入3是返回b,其他是c。
但是在Go中,輸入1竟然是返回c,被坑過幾次。
如果想在Go中達到類似Java的效果,只能這麼寫:
switch type { case 1: return "a" case 2: return "a"; case 3: return "b" default: return "c" }
一條條寫明顯太費勁了,所以還可以這麼寫:
switch type {
case 1, 2:
return "a";
case 3:
return "b"
default:
return "c"
}
小細節卻不能不注意,因為如果switch分支走錯,邏輯基本就錯了。
相關推薦
Golang中Switch的使用
跟一般語言的Switch有點不一樣,Golang在使用兩個case的時候,是第一個是不生效的。 如下的程式碼 switch (type) { case 1: case 2: return "a"; case 3: return "b" default:
golang中x.(type)只能在switch中使用
例如: func MyPrintf(args ...interface{}) { for _, arg := range args { switch arg.(type) { case int: fmt.Println(arg, "is an int value.") ca
Go_16:GoLang中flag標簽使用
span clas 格式化 print mes 初始 div fun sta 直接上代碼,在代碼中會做詳細的解釋,當前運行環境為:Go-1.8.1 package main import ( "flag" "log" "os" ) func
GO_05_2:Golang 中 panic、recover、defer 的用法
log logs lan finall 可能 錯誤處理 錯誤 異常處理 auto 函數 defer 1. 它的執行方式類似其他語言中的折構函數,在函數體執行結束後按照調用順序的 相反順序 逐個執行 2. 即使函數發生 嚴重錯誤 也會被執行,類似於 java 中 t
golang 中timer,ticker 的使用
() lang 一個 con logs col func ssa 接收消息 寫一個程序, 5s, 10s後能定時執行一個任務,同時能不停的處理來的消息。 ------------------------------------------------------------
golang中defer的使用規則
net在golang當中,defer代碼塊會在函數調用鏈表中增加一個函數調用。這個函數調用不是普通的函數調用,而是會在函數正常返回,也就是return之後添加一個函數調用。因此,defer通常用來釋放函數內部變量。為了更好的學習defer的行為,我們首先來看下面一段代碼:func CopyFile(dstNa
golang中tcp socket粘包問題和處理
enc pack 獲取 人工 過程 reader 主動 exit ase 轉自:http://www.01happy.com/golang-tcp-socket-adhere/ 在用golang開發人工客服系統的時候碰到了粘包問題,那麽什麽是粘包呢?例如我們和客戶端約定數據
在Golang中實現有無限容量的同步Queue
過大 apach 同步隊列 import pack news sed 標簽 http chan對象是Golang的一個核心賣點,可以輕松實現goroutine之間的通信。Golang允許我們為chan設置不同的緩沖大小。當默認緩沖大小為0的時候,一個goroutine對
Golang中使用heap編寫一個簡單高效的定時器模塊
true pop 邏輯 .com light 初始化 callback before cell 定時器模塊在服務端開發中非常重要,一個高性能的定時器模塊能夠大幅度提升引擎的運行效率。使用Golang和heap實現一個通用的定時器模塊,代碼來自:https://github.
Golang 中三種讀取文件發放性能對比
多少 amp 性能 title 進行 con 讀取 == 生態 Golang 中讀取文件大概有三種方法,分別為: 1. 通過原生態 io 包中的 read 方法進行讀取 2. 通過 io/ioutil 包提供的 read 方法進行讀取 3. 通過 b
GoLang中面向對象的三大特性
面向 c++ amp pan 理解 interface tool 函數 inter 有過 JAVA 語言學習經歷的朋友都知道,面向對象主要包括了三個基本特征:封裝、繼承和多態。封裝,就是指運行的數據和函數綁定在一起,JAVA 中主要是通過 super 指針來完成的;繼承,就
GoLang中如何使用多參數屬性傳參
cnblogs sting param fun rgs print 簡單的 接受 ... 我們常常因為傳入的參數不確定而頭疼不已,golang 為我們提供了接入多值參數用於解決這個問題。但是一般我們直接寫已知代碼即所有的值都知道一個一個塞進去就好了,但是絕大部分我們是得到用
Go_20: Golang 中 time 包的使用
舉例 處理程序 計算表達式 時間格式化 停止 out str div ati time包中包括兩類時間:時間點(某一時刻)和時常(某一段時間) 1. 時間常量(時間格式化) const ( ANSIC = "Mon Jan _2 15:04:05 20
golang 中 sync包的 WaitGroup
eight ack family height 線程 var 等待 one span golang 中的 sync 包有一個很有用的功能,就是 WaitGroup 先說說 WaitGroup 的用途:它能夠一直等到所有的 goroutine 執行完成,並且阻塞主線程
golang 中的 time 包的 Ticker
target spa tro int select con www 結果 div 真實的應用場景是:在測試收包的順序的時候,加了個 tick 就發現丟包了 那麽來看一個應用例子: package main import ( "fmt" "runtime"
golang中使用消息名稱創建protobuf消息
mem 很好 兩個 因此 uuid gae [] not found port golang 中根據 protobuf message name 動態實例化 protobuf 消息,消息內容通過輸入 json 文件指定 背景: 項目中使用 protobuf 作為
golang中如何判斷文件是否有可執行權限
turn 判斷 pac pri == pre 十進制 golang name 本文介紹在Go語言如何檢查文件的權限。以檢查文件可執行權限為例。 在文件系統中,文件的屬性使用uint32表示。 例如 -rwxrwxrwx 判斷可執行權限,也就是檢查文件mode是否有: --
golang中文字符編碼轉換
字符 gpo convert bytes HA blog main golang deb golang 有很多需要將中文轉成utf8的 網上搜到一個直接轉的,記錄下,備用 package main import "golang.org/x/text/encoding/s
Golang中Struct與DB中表字段通過反射自動映射 - sqlmapper
size http 維護 default arc struct 自動 地址 字符 Golang中操作數據庫已經有現成的庫"database/sql"可以用,但是"database/sql"只提供了最基礎的操作接口; 對數據庫中一張表的增刪改查等操作,必須手動編寫sql st
golang 中 string 轉換 []byte 的一道筆試題
ogr 常用 general hub 代碼 seq mmu gen cati 背景 去面試的時候遇到一道和 string 相關的題目,記錄一下用到的知識點。題目如下: s:="123" ps:=&s b:=[]byte(s) pb:=&b s+="4" *