本文目錄一覽:
- 1、golang中map的key的類型
- 2、Golang入門到項目實戰 | golang並發變成之通道channel
- 3、golang中有類似其他語言的三目運算符的東西沒
- 4、golang 正則 regexp包使用
- 5、Go語言基礎語法(一)
- 6、Go語言中的符號”
golang中map的key的類型
golang 中 map 的 key 必須是可比較的,再簡單點是可以使用 == 運算符進行比較。
很顯然 slice,map,function 不可以,
所以 數字、string、bool、array、channel、指針可以,以及 包含前面類型的 struct
leetcode 49 題 所以恰好要取一個 string 的 hash 值,題解中大神雲集,各種質數相乘,字符排序後作為 key 的,更有甚者將數組作為 key,我覺得很巧妙都很巧妙。
Golang入門到項目實戰 | golang並發變成之通道channel
Go提供了一種稱為通道的機制,用於在goroutine之間共享數據。當您作為goroutine執行並發活動時,需要在goroutine之間共享資源或數據,通道充當goroutine之間的管道(管道)並提供一種機制來保證同步交換。
根據數據交換的行為,有兩種類型的通道:無緩衝通道和緩衝通道。無緩衝通道用於執行goroutine之間的同步通信,而緩衝通道用於執行異步通信。無緩衝通道保證在發送和接收發生的瞬間兩個goroutine之間的交換。緩衝通道沒有這樣的保證。
通道由make函數創建,該函數指定chan關鍵字和通道的元素類型。
這是創建無緩衝和緩衝通道的代碼塊:
語法
使用內置函數make創建無緩衝和緩衝通道。make的第一個參數需要關鍵字chan,然後是通道允許交換的數據類型。
這是將值發送到通道的代碼塊需要使用-運算符:
語法
一個包含5個值的緩衝區的字符串類型的goroutine1通道。然後我們通過通道發送字符串“Australia”。
這是從通道接收值的代碼塊:
語法
– 運算符附加到通道變量(goroutine1)的左側,以接收來自通道的值。
在無緩衝通道中,在接收到任何值之前沒有能力保存它。在這種類型的通道中,發送和接收goroutine在任何發送或接收操作完成之前的同一時刻都準備就緒。如果兩個goroutine沒有在同一時刻準備好,則通道會讓執行其各自發送或接收操作的goroutine首先等待。同步是通道上發送和接收之間交互的基礎。沒有另一個就不可能發生。
在緩衝通道中,有能力在接收到一個或多個值之前保存它們。在這種類型的通道中,不要強制goroutine在同一時刻準備好執行發送和接收。當發送和接收阻塞時也有不同的條件。只有當通道中沒有要接收的值時,接收才會阻塞。僅當沒有可用緩衝區來放置正在發送的值時,發送才會阻塞。
實例
運行結果
golang中有類似其他語言的三目運算符的東西沒
沒有的,go中只能這樣
var a int
if x 0 {
a = 1
} else {
a = 2
}
golang 正則 regexp包使用
先介紹幾種常用的方法:
1、使用MatchString函數或Match函數
regexp.MatchString(pattern string, s string) pattern為正則表達式,s為需要校驗的字符串
regexp.Match(pattern string, b []byte) pattern為正則表達式,s為需要校驗的字符串
它們的作用都是匹配,區別在於參數為字符串和切片
實例如下:
2、使用 Compile函數或MustCompile函數
它們的區別是Compile返回兩個參數 Regexp,error類型,而MustCompile只返回 Regexp類型
它們的作用是將正則表達式進行編譯,返回優化的 Regexp 結構體,該結構體有需多方法。
實例如下:
3、查找正則匹配字串( 註:函數名包含string的所傳參數為string 其他的均為[]byte 帶All是所有)
查找正則匹配的字符串位置( 註:函數名包含string的所傳參數為string 其他的均為[]byte 帶All是所有)
4、替換
正則替換
按原文替換
函數處理替換源字串
5、Regexp結構體中一些常用的方法
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–
Go語言中的符號”
左移運算符()
將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。
例:a = a 2 將a的二進制位左移2位,右補0,
左移1位後a = a * 2;
若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符()
將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。
操作數每右移一位,相當於該數除以2。
例如:a = a 2 將a的二進制位右移2位,
左補0 or 補1 得看被移數是正還是負。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/239702.html