GoLang string及其相關操作

2021-10-07 07:31:21 字數 4748 閱讀 3261

str := "hello world! \n hello gopher! \n"
輸出:

hello world! 

hello gopher!

str :=  `hello world! \n hello gopher! \n`
輸出:

hello world! \nhello gopher! \n

雙引號中的轉義字元被替換,而反引號中原生字串中的\n會被原樣輸出。

string型別的零值是為長度為零的字串,即空字串 ""

go 語言中的string型別是一種值型別,儲存的字串是不可變的,如果要修改string內容需要將string轉換為byterune,並且修改後的string內容是重新分配的

可以通過函式len()來獲取字串所佔的位元組長度

str := "asd"

len(str)

如果需要獲得字元,應該這麼做:

package main

import "fmt"

func main()

}

輸出:

我與春風皆過客,你攜秋水攬星河。

標準庫中有四個包對字串處理尤為重要:bytesstringsstrconvunicode包。

unicode大寫、小寫、標題三種格式字元視為相同

func main()
func main()
func main()
func main()
func main()
func main()
雖然搜尋的時rune字元,但是返回的還是位元組的索引。

str中的old字串替換為newstr字串,返回替換後的結果,n引數為替換次數,n<0表示無限次。

func main()
func main()
func main()
func main()
func main()
func main()
func main() 

}

輸出結果:

[liu hai zhang]

liuhai

zhang

func main()
func main() 

res := strings.join(slice, "-")

fmt.println(res) // liu-hai-zhuang

}

func main()
func main()
func main()
方法類似strings包,不給過是針對byte型別,這裡省略,可以參考部落格

func main()  else 

}

另外還可以用strconv包下的:

func parseint(s string, base int, bitsize int) (i int64, err error)

func parseuint(s string, base int, bitsize int) (n uint64, err error)

base指定進製(2到36),如果base0,則會從字串前置判斷,」0x」16進製,」0」8進製,否則是10進製;

bitsize指定結果必須能無溢位賦值的整數型別,08163264分別代表intint8int16int32int64

func main()
str為:1tttruetruetrue中的一種時為真值

str為:0fffalsefalsefalse中的一種時為假值

func main()
bitsize3264, 對應系統的位數

func main() 

fmt.printf("type:%t value:%#v\n", str, str) // type:float64 value:250.56

}

bitsize表示f的**型別(32float3264float64),會據此進行捨入。

fmt表示格式:'f'-ddd.dddd)、'b'-ddddp±ddd,指數為二進位制)、'e'-d.dddde±dd,十進位制指數)、'e'-d.dddde±dd,十進位制指數)、'g'(指數很大時用'e'格式,否則'f'格式)、'g'(指數很大時用'e'格式,否則'f'格式)。

prec控制精度(排除指數部分):對'f''e''e',它表示小數點後的數字個數;對'g''g',它控制總的數字個數。如果prec-1,則代表使用最少數量的、但又必需的數字來表示f

func main()
當然,以上型別轉string的話,可以直接用fmt.sprintf實現。

// 判斷字元 r 是否為 unicode 規定的 title 字元

// 大部分字元的 title 格式就是其大寫格式

// 只有少數字元的 title 格式是特殊字元

// 這裡判斷的就是特殊字元

func istitle(r rune) bool

_case取值:uppercaselowercasetitlecase

func main() 

}}

更多unicode.scripts取值請參考:

golang string與byte的區別

為啥string和byte型別轉換需要一定的代價?為啥內建函式copy會有一種特殊情況copy dst byte,src string int?string和byte,底層都是陣列,但為什麼byte比string靈活,拼接效能也更高 動態字串拼接效能對比 今天看了原始碼 了一下。以下所有觀點都是個人...

描述Tornaod和VxWorks及其相互關係。

vxworks vxworks 是美國風河公司 wind river system 推出的一種嵌入式實時作業系統。它具有可伸縮 可裁剪及高可靠性等的特點,因此廣泛的應用於通訊 軍事 航空 航天等高精尖技術及實時性要求極高的領域中。vxworks 包括乙個微核心 強大的網路支援 檔案系統 i o系統和...

golang string迭代和結構體初始化

1.golang字串range時返回的型別為rune 在某次測試時發現,string字串,直接用下標訪問和用range訪問返回的型別不同,參看下面 func main 輸出結果為 type is uint8 is type int32 is type int32即直接下標訪問和用range訪問返回的...