golangcase的簡單介紹

本文目錄一覽:

求用go語言編寫的統計腳本

package main

import (

“fmt”

“os”

)

func main() {

if len(os.Args) 2 {

fmt.Println(“Please Input File Name!”)

return

}

file, err := os.Open(os.Args[1])

if err != nil {

return

}

buff := make([]byte, 1000)

_, err = file.Read(buff)

if err != nil {

return

}

a, c, d, e, _ := Sum(buff)

fmt.Printf(“a c d e \n%d %d %d %d\n”, a, c, d, e)

}

func Sum(buff []byte) (a, c, d, e, def int) {

for i := 0; i len(buff); i++ {

switch buff[i] {

case ‘a’:

a++

case ‘c’:

c++

case ‘d’:

d++

case ‘e’:

e++

default:

def++

}

}

return

}

Golang中的benchmark

得到結果:

上面也可以用table driven的方式來運行多個case,這裡類似於 t.Run 方法,需要使用 b.Run 方法來執行多個case比如:

golang channel select 哪個case

golang channel select 哪個case

對語句:

printf(“%f”,S);

在宏代換後變為:

printf(“%f”,3.1415926*y*y);

6) 習慣上宏名用大寫字母表示,以便於與變數區別。但也允許用小寫字母。

7) 可用宏定義表示數據類型,使書寫方便。

例如:

#define STU struct stu

在程序中可用STU作變數說明:

STU body[5],*p;

#define INTEGER int

在程序中即可用INTEGER作整型變數說明:

INTEGER a,b;

應注意用宏定義表示數據類型和用typedef定義數據說明符的區別。

宏定義只是簡單的字元串代換,是在預處理完成的,而typedef是在編譯時處理的,它不是作簡單的代換,而是對類型說明符重新命名。被命名的標識符具有類型定義說明的功能。

請看下面的例子:

go語言select的作用

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語言的基礎語法。

先來看一個簡單的go語言代碼:

go語言的注釋方法:

代碼執行結果:

下面來進一步介紹go的基礎語法。

go語言中格式化輸出可以使用 fmt 和 log 這兩個標準庫,

常用方法:

示例代碼:

執行結果:

更多格式化方法可以訪問中的fmt包。

log包實現了簡單的日誌服務,也提供了一些格式化輸出的方法。

執行結果:

下面來介紹一下go的數據類型

下表列出了go語言的數據類型:

int、float、bool、string、數組和struct屬於值類型,這些類型的變數直接指向存在內存中的值;slice、map、chan、pointer等是引用類型,存儲的是一個地址,這個地址存儲最終的值。

常量是在程序編譯時就確定下來的值,程序運行時無法改變。

執行結果:

執行結果:

Go 語言的運算符主要包括算術運算符、關係運算符、邏輯運算符、位運算符、賦值運算符以及指針相關運算符。

算術運算符:

關係運算符:

邏輯運算符:

位運算符:

賦值運算符:

指針相關運算符:

下面介紹一下go語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯用,這裡不做介紹。

if語法格式如下:

if … else :

else if:

示例代碼:

語法格式:

另外,添加 fallthrough 會強制執行後面的 case 語句,不管下一條case語句是否為true。

示例代碼:

執行結果:

下面介紹幾種循環語句:

執行結果:

執行結果:

也可以通過標記退出循環:

–THE END–

golang select 為什麼要for循環

有數量不定的goroutine往channel里塞東西,然後select來接收並處理。如果所有的goroutine都完成工作,ch也接收完了,那麼select就會阻塞。現在我想要跳出死循環,大概是在for循環里設置一些東西,不知道可不可以實現,或者有類似的解決方法。

go func(){ for{ select{ case v:= 《-ch: //這裡打左尖括弧排版就會亂,不知道是不是網站的bug DoSomething() } } }()

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/244781.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:04
下一篇 2024-12-12 13:04

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智慧,Python都扮演著重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28
  • 如何製作一個簡單的換裝遊戲

    本文將從以下幾個方面,為大家介紹如何製作一個簡單的換裝遊戲: 1. 遊戲需求和界面設計 2. 使用HTML、CSS和JavaScript開發遊戲 3. 實現遊戲的基本功能:拖拽交互…

    編程 2025-04-27
  • Guava Limiter——限流器的簡單易用

    本文將從多個維度對Guava Limiter進行詳細闡述,介紹其定義、使用方法、工作原理和案例應用等方面,並給出完整的代碼示例,希望能夠幫助讀者更好地了解和使用該庫。 一、定義 G…

    編程 2025-04-27
  • 2的32次方-1:一個看似簡單卻又複雜的數字

    對於計算機領域的人來說,2的32次方-1(也就是十進位下的4294967295)這個數字並不陌生。它經常被用來表示IPv4地址或者無符號32位整數的最大值。但實際上,這個數字卻包含…

    編程 2025-04-27
  • 製作一個簡單的管理系統的成本及實現

    想要製作一個簡單的管理系統,需要進行技術選型、開發、測試等過程,那麼這個過程會花費多少錢呢?我們將從多個方面來闡述製作一個簡單的管理系統的成本及實現。 一、技術選型 當我們開始思考…

    編程 2025-04-27

發表回復

登錄後才能評論