第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開(kāi)發(fā)者教程

Go 入門(mén)教程

Go 語(yǔ)言基礎(chǔ)教程
01 Go語(yǔ)言簡(jiǎn)介 02 Go 在 Windows 上的安裝及配置 03 Go 在 Linux 上的安裝與配置 04 Go 在 MacOS 上的安裝及配置 05 Git 的下載和安裝 06 VSCode 編輯器安裝和配置 07 Go 的變量聲明 08 Go 的變量賦值 09 Go 語(yǔ)言的 := 10 Go 的整型(int) 11 Go 的無(wú)符號(hào)整型(uint) 12 Go 的浮點(diǎn)型(float) 13 Go 的字符類型 14 Go 的布爾型(bool) 15 Go 的強(qiáng)制類型轉(zhuǎn)換 16 Go 語(yǔ)言的常量 17 Go 語(yǔ)言中代替枚舉的辦法 18 Go 語(yǔ)言中的運(yùn)算符 19 Go 語(yǔ)言的分支語(yǔ)句 20 Go 語(yǔ)言的循環(huán)語(yǔ)句 21 Go 語(yǔ)言的通道 22 Go 語(yǔ)言中的函數(shù) 23 Go 語(yǔ)言函數(shù)中的 defer 24 Go 語(yǔ)言中的閉包 25 Go 語(yǔ)言的指針 26 Go 語(yǔ)言中的數(shù)組 27 Go 語(yǔ)言中的切片 28 Go 語(yǔ)言中的 Map 29 Go 語(yǔ)言中的 range 30 Go 語(yǔ)言拓展以有類型 31 Go 語(yǔ)言中的結(jié)構(gòu)體和"面向?qū)ο?quot; 32 Go 語(yǔ)言中的接口 33 Go 語(yǔ)言類型的內(nèi)嵌 34 Go 語(yǔ)言中的 nil 35 Go 語(yǔ)言函數(shù)式編程 36 Go 語(yǔ)言中的錯(cuò)誤和異常處理 37 Go 語(yǔ)言的并發(fā) 38 Go 語(yǔ)言中的包 39 Go 語(yǔ)言 go mod 包依賴管理工具 40 Go 語(yǔ)言的文件操作 41 Go 語(yǔ)言中的系統(tǒng)包 42 Go 語(yǔ)言的 strings 系統(tǒng)包的使用 43 Go 語(yǔ)言中的變參 44 Go 語(yǔ)言中的反射 45 Go 語(yǔ)言性能測(cè)試 46 使用 Go 語(yǔ)言搭建簡(jiǎn)易登錄功能 47 使用 gin 包優(yōu)化登錄功能
首頁(yè) 慕課教程 Go 入門(mén)教程 Go 入門(mén)教程 42 Go 語(yǔ)言的 strings 系統(tǒng)包的使用

Go strings 系統(tǒng)包的使用說(shuō)明

前文我們有學(xué)習(xí)了 string 變量,發(fā)現(xiàn) Go 語(yǔ)言并沒(méi)有向面向?qū)ο笳Z(yǔ)言那樣,類型中自帶方法來(lái)處理對(duì)象的值。Go語(yǔ)言中也有類似的操作,其操作全都在 strings 系統(tǒng)包中實(shí)現(xiàn)了。本文主要來(lái)講解一下如何使用 strings 系統(tǒng)包比較常用的字符串操作

1. 獲取字符串長(zhǎng)度

在往數(shù)據(jù)庫(kù)中寫(xiě)入數(shù)據(jù)的時(shí)候,數(shù)據(jù)庫(kù)字段通常都會(huì)有長(zhǎng)度限制,所以在寫(xiě)入之前最好事先判斷一下字符串的長(zhǎng)度是否符合自己的設(shè)計(jì)。

代碼示例:

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "Hello Codey!"
    fmt.Println(len(str))
    fmt.Println(strings.Count(str, "")-1)
}

執(zhí)行結(jié)果:

圖片描述

其實(shí)獲取字符串長(zhǎng)度常用的是用 len() 函數(shù)去獲取,因?yàn)?sring 的本質(zhì)是一個(gè) rune 切片,所以 len() 對(duì) string 也是可以直接使用的。如果想要通過(guò) strings 包來(lái)獲取長(zhǎng)度,我們可以通過(guò) strings.Count(str,s string)int 來(lái)迂回達(dá)到目的,尋找字符串中的空字符串的個(gè)數(shù)就相當(dāng)于尋找字符之間的空隙(包括字符首尾),所以得到的數(shù)字就是長(zhǎng)度+1,我們得到結(jié)果后再減去1,就可以得到字符串的長(zhǎng)度了。

2. 比較字符串

在開(kāi)發(fā)大小寫(xiě)不敏感的應(yīng)用場(chǎng)景時(shí),比如說(shuō)地名的英文縮寫(xiě)。一般情況我們都將字符串轉(zhuǎn)換為大寫(xiě)或者小寫(xiě)再進(jìn)行比較。Go 語(yǔ)言中的 strings 包中專門(mén)提供了一個(gè)大小寫(xiě)不敏感的比較函數(shù)——strings.EqualFold(str1,str2 string)bool。

代碼示例:

package main

import (
    "fmt"
    "strings"
)

func main() {
    str1 := "Hello Codey!"
    str2 := "heLLo coDEy!"
    fmt.Println(strings.EqualFold(str1, str2))
}

執(zhí)行結(jié)果:

圖片描述

3. 字符串分割

Go 語(yǔ)言中也是可以支持根據(jù)特定字符串將字符串分割為字符串?dāng)?shù)組的操作。通過(guò)使用 strings.Split(s, sep string) []string 來(lái)實(shí)現(xiàn)

代碼示例:

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "Hello Codey!"
    fmt.Println(strings.Split(str, " "))//使用空格字符串去分割str
}

執(zhí)行結(jié)果:

圖片描述

4. 前后綴的判斷

在執(zhí)行文件操作的時(shí)候,經(jīng)常會(huì)用到的前后綴的操作,比如獲取日志文件的時(shí)候,獲取 .log 結(jié)尾,同時(shí)還要以2020 5 開(kāi)頭的文件,就需要判斷前后綴是否含有這些字符串,Go 語(yǔ)言的前綴判斷是使用 strings.HasPrefix(s, prefix string``)bool,而后綴是使用 strings.HasSuffix(s, prefix string``)bool。

代碼示例

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "2020_5_20.log"
    fmt.Println(strings.HasPrefix(str, "2020_5_"))
    fmt.Println(strings.HasSuffix(str, ".log"))
}

執(zhí)行結(jié)果:

圖片描述

5. 去除前后空格

在處理前端輸入的數(shù)據(jù)的時(shí)候,有時(shí)會(huì)需要去除前后空格。Go 語(yǔ)言中使用 strings.TrimSpace(s string)string 來(lái)執(zhí)行這個(gè)操作。

代碼示例:

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "           Hello Codey!          "
    fmt.Println(strings.TrimSpace(str))
}

執(zhí)行結(jié)果:

圖片描述

6. 將字符串?dāng)?shù)組拼接為字符串

Go 語(yǔ)言中使用 strings.Join(a ``[]string, ``sep string) string 來(lái)將字符串?dāng)?shù)組,根據(jù)你想要的字符串進(jìn)行拼接成為一個(gè)字符串。

代碼示例:

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := []string{"Hello", "Hi"}
    fmt.Println(strings.Join(str, ","))//使用逗號(hào)拼接字符串
}

執(zhí)行結(jié)果:

圖片描述

7. 字符串替換

Go 語(yǔ)言中使用 strings.Replace(s, old, new string, n int) string 來(lái)進(jìn)行字符串替換,n<0 時(shí)替換字符串中左右舊字符子串。

package main

import (
    "fmt"
    "strings"
)

func main() {
    str := "Hello Codey!"
    fmt.Println(strings.Replace(str, "Hello", "Hi", -1))//將str中所有Hello替換為Hi
}

執(zhí)行結(jié)果:

圖片描述

8. 小結(jié)

本文主要介紹了 Go 語(yǔ)言的一個(gè)字符串操作包,這個(gè)包里面還有很多其它對(duì)字符串的操作,有興趣的讀者可以繼續(xù)研究。本文介紹的主要就是些開(kāi)發(fā)中常用的字符串操作,在我的開(kāi)發(fā)經(jīng)歷中還是字符串的分割和替換用的最多,大家要注意的是 Go 語(yǔ)言中的字符串是變量,并不是對(duì)象,每次修改完字符串其實(shí)都會(huì)使用一個(gè)新的內(nèi)存,所以在內(nèi)存不充足的場(chǎng)景要慎用字符串操作