最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go 字符串比較的實現(xiàn)示例

 更新時間:2022年01月24日 16:40:42   作者:banjming  
本文主要介紹了Go 字符串比較的實現(xiàn)示例,主要包括三種比較方式,具有一定的參考價值,感興趣的可以了解一下

字符串比較, 可以直接使用 == 進行比較, 也可用用 strings.Compare 比較

go 中字符串比較有三種方式:

  • == 比較
  • strings.Compare 比較
  • strings.EquslFold 比較
#### 代碼示例
```go
fmt.Println("go"=="go")
fmt.Println("GO"=="go")

fmt.Println(strings.Compare("GO","go"))
fmt.Println(strings.Compare("go","go"))

fmt.Println(strings.EqualFold("GO","go"))

上述代碼執(zhí)行結(jié)果如下:

true
false
-1
0
true

Compare 和 EqualFold 區(qū)別

EqualFold 是比較UTF-8編碼在小寫的條件下是否相等,不區(qū)分大小寫

// EqualFold reports whether s and t, interpreted as UTF-8 strings, // are equal under Unicode case-folding. func EqualFold(s, t string) bool

要注意的是 Compare 函數(shù)是區(qū)分大小寫的, == 速度執(zhí)行更快

// Compare is included only for symmetry with package bytes. // It is usually clearer and always faster to use the built-in // string comparison operators ==, <, >, and so on. func Compare(a, b string) int

忽略大小寫比較

有時候要忽略大小寫比較, 可以使用strings.EqualFold 字符串比較是否相等
源碼實現(xiàn)

// EqualFold reports whether s and t, interpreted as UTF-8 strings,
// are equal under Unicode case-folding, which is a more general
// form of case-insensitivity.
func EqualFold(s, t string) bool {
? ? for s != "" && t != "" {
? ? ? ? // Extract first rune from each string.
? ? ? ? var sr, tr rune
? ? ? ? if s[0] < utf8.RuneSelf {
? ? ? ? ? ? sr, s = rune(s[0]), s[1:]
? ? ? ? } else {
? ? ? ? ? ? r, size := utf8.DecodeRuneInString(s)
? ? ? ? ? ? sr, s = r, s[size:]
? ? ? ? }
? ? ? ? if t[0] < utf8.RuneSelf {
? ? ? ? ? ? tr, t = rune(t[0]), t[1:]
? ? ? ? } else {
? ? ? ? ? ? r, size := utf8.DecodeRuneInString(t)
? ? ? ? ? ? tr, t = r, t[size:]
? ? ? ? }

? ? ? ? // If they match, keep going; if not, return false.

? ? ? ? // Easy case.
? ? ? ? if tr == sr {
? ? ? ? ? ? continue
? ? ? ? }

? ? ? ? // Make sr < tr to simplify what follows.
? ? ? ? if tr < sr {
? ? ? ? ? ? tr, sr = sr, tr
? ? ? ? }
? ? ? ? // Fast check for ASCII.
? ? ? ? if tr < utf8.RuneSelf {
? ? ? ? ? ? // ASCII only, sr/tr must be upper/lower case
? ? ? ? ? ? if 'A' <= sr && sr <= 'Z' && tr == sr+'a'-'A' {
? ? ? ? ? ? ? ? continue
? ? ? ? ? ? }
? ? ? ? ? ? return false
? ? ? ? }

? ? ? ? // General case. SimpleFold(x) returns the next equivalent rune > x
? ? ? ? // or wraps around to smaller values.
? ? ? ? r := unicode.SimpleFold(sr)
? ? ? ? for r != sr && r < tr {
? ? ? ? ? ? r = unicode.SimpleFold(r)
? ? ? ? }
? ? ? ? if r == tr {
? ? ? ? ? ? continue
? ? ? ? }
? ? ? ? return false
? ? }

? ? // One string is empty. Are both?
? ? return s == t
}

通過源碼可看到 if 'A' <= sr && sr <= 'Z' && tr == sr+'a'-'A'  可以看到不區(qū)分大小寫的實現(xiàn)。
看個完整測試代碼:

// Golang program to illustrate the
// strings.EqualFold() Function
package main

// importing fmt and strings
import (
?? ?"fmt"
?? ?"strings"
)

// calling main method
func main() {
?? ?// case insensitive comparing and returns true.
?? ?fmt.Println(strings.EqualFold("Geeks", "Geeks"))

?? ?// case insensitive comparing and returns true.
?? ?fmt.Println(strings.EqualFold("computerscience", "computerscience"))
}

執(zhí)行結(jié)構(gòu)
true
true

 到此這篇關(guān)于Go 字符串比較的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Go 字符串比較內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在goland中配置gofmt的操作

    在goland中配置gofmt的操作

    這篇文章主要介紹了在goland中配置gofmt的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言:打造優(yōu)雅數(shù)據(jù)庫單元測試的實戰(zhàn)指南

    Go語言:打造優(yōu)雅數(shù)據(jù)庫單元測試的實戰(zhàn)指南

    Go語言數(shù)據(jù)庫單元測試入門:聚焦高效、可靠的數(shù)據(jù)庫代碼驗證!想要確保您的Go應(yīng)用數(shù)據(jù)層堅如磐石嗎?本指南將手把手教您如何利用Go進行數(shù)據(jù)庫單元測試,輕松揪出隱藏的bug,打造無懈可擊的數(shù)據(jù)處理邏輯,一起來探索吧!
    2024-01-01
  • Go實現(xiàn)并發(fā)緩存的示例代碼

    Go實現(xiàn)并發(fā)緩存的示例代碼

    高并發(fā)數(shù)據(jù)存儲是現(xiàn)代互聯(lián)網(wǎng)應(yīng)用開發(fā)中常遇到的一大挑戰(zhàn),本文主要介紹了Go實現(xiàn)并發(fā)緩存的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Go語言指針訪問結(jié)構(gòu)體的方法

    Go語言指針訪問結(jié)構(gòu)體的方法

    這篇文章主要介紹了Go語言指針訪問結(jié)構(gòu)體的方法,涉及Go語言指針及結(jié)構(gòu)體的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 詳解Golang的GC三色標記法

    詳解Golang的GC三色標記法

    這篇文章主要為大家介紹了Golang的GC三色標記法,文中有詳細的實現(xiàn)過程供大家參考,對大家的學(xué)習(xí)或工作有一定幫助,感興趣的可以跟著小編一來看看
    2023-05-05
  • Go并發(fā)編程中的錯誤恢復(fù)機制與代碼持續(xù)執(zhí)行實例探索

    Go并發(fā)編程中的錯誤恢復(fù)機制與代碼持續(xù)執(zhí)行實例探索

    這篇文章主要為大家介紹了Go并發(fā)編程中的錯誤恢復(fù)機制與代碼持續(xù)執(zhí)行實例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Go并發(fā):使用sync.WaitGroup實現(xiàn)協(xié)程同步方式

    Go并發(fā):使用sync.WaitGroup實現(xiàn)協(xié)程同步方式

    這篇文章主要介紹了Go并發(fā):使用sync.WaitGroup實現(xiàn)協(xié)程同步方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 詳解Golang中errors包如何返回自定義error類型

    詳解Golang中errors包如何返回自定義error類型

    這篇文章主要為大家詳細介紹了Golang中errors包如何返回自定義error類型,文中的示例代碼簡潔易懂,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09
  • 淺析Golang開發(fā)中g(shù)oroutine的正確使用姿勢

    淺析Golang開發(fā)中g(shù)oroutine的正確使用姿勢

    很多初級的Gopher在學(xué)習(xí)了goroutine之后,在項目中其實使用率不高,所以這篇文章小編主要來帶大家深入了解一下goroutine的常見使用方法,希望對大家有所幫助
    2024-03-03
  • Go語言實現(xiàn)的一個簡單Web服務(wù)器

    Go語言實現(xiàn)的一個簡單Web服務(wù)器

    這篇文章主要介紹了Go語言實現(xiàn)的一個簡單Web服務(wù)器,本文先是給出一個使用http包建立的Web服務(wù)器源碼,并對比了其它編程語言,需要的朋友可以參考下
    2014-10-10

最新評論

兴隆县| 祁连县| 秀山| 两当县| 云龙县| 全南县| 岚皋县| 桑植县| 乌兰县| 射阳县| 天门市| 南平市| 阆中市| 黔东| 富阳市| 河池市| 乌兰浩特市| 朔州市| 浮山县| 金坛市| 南安市| 望江县| 聊城市| 财经| 上饶市| 滨州市| 舟山市| 辽宁省| 汽车| 蒲城县| 锦州市| 凉山| 白朗县| 兰坪| 黔江区| 济南市| 保定市| 博爱县| 天等县| 安图县| 永平县|