是的。
為永濟等地區用戶提供了全套網頁設計制作服務,及永濟網站建設行業解決方案。主營業務為網站設計、網站制作、永濟網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
根據中國知網顯示關鍵字def是用來定義方法即函數,屬于應用格式,是關鍵字。
DEF是英文單詞Defence防御的簡寫,在一些電子游戲中代表某個單位的防御力。
select 語句使得一個 goroutine 在多個通訊操作上等待。
select 會阻塞,直到條件分支中的某個可以繼續執行,這時就會執行那個條件分支。當多個都準備好的時候,會隨機選擇一個。
復制代碼代碼如下:
package main
import "fmt"
func fibonacci(c, quit chan int) {
x, y := 1, 1
for {
select {
case c - x:
x, y = y, x + y
case -quit:
fmt.Println("quit")
return
}
}
}
func main() {
c := make(chan int)
quit := make(chan int)
go func() {
for i := 0; i 10; i++ {
fmt.Println(-c)
}
quit - 0
}()
fibonacci(c, quit)
}
默認選擇
當 select 中的其他條件分支都沒有準備好的時候,default 分支會被執行。
為了非阻塞的發送或者接收,可使用 default 分支:
select {
case i := -c:
// use i
default:
// receiving from c would block
}
復制代碼代碼如下:
package main
import (
"fmt"
"time"
)
func main() {
tick := time.Tick(1e8)
boom := time.After(5e8)
for {
select {
case -tick:
fmt.Println("tick.")
case -boom:
fmt.Println("BOOM!")
return
default:
fmt.Println(" .")
time.Sleep(5e7)
}
}
}
Go里面提供了一個關鍵字select,通過select可以監聽channel上的數據流動。
select的用法與switch語言非常類似,由select開始一個新的選擇塊,每個選擇條件由case語句來描述。
與switch語句相比, select有比較多的限制,其中最大的一條限制就是每個case語句里必須是一個IO操作,大致的結構如下:
在一個select語句中,Go語言會按順序從頭至尾評估每一個發送和接收的語句。
如果其中的任意一語句可以繼續執行(即沒有被阻塞),那么就從那些可以執行的語句中任意選擇一條來使用。
如果沒有任意一條語句可以執行(即所有的通道都被阻塞),那么有兩種可能的情況:
如果給出了default語句,那么就會執行default語句,同時程序的執行會從select語句后的語句中恢復。
如果沒有default語句,那么select語句將被阻塞,直到至少有一個通信可以進行下去
有時候會出現goroutine阻塞的情況,那么我們如何避免整個程序進入阻塞的情況呢?我們可以利用select來設置超時,通過如下的方式實現:
select總結:
作用: 用來監聽 channel 上的數據流動方向。 讀?寫?
select實現fibonacci數列:
本文標題:搜索go語言的關鍵字 搜索go語言的關鍵字有哪些
瀏覽路徑:http://vcdvsql.cn/article10/ddoiddo.html
成都網站建設公司_創新互聯,為您提供定制開發、全網營銷推廣、外貿網站建設、網站設計、虛擬主機、自適應網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯