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
轉換為byte
或rune
,並且修改後的string
內容是重新分配的。
可以通過函式len()
來獲取字串所佔的位元組長度
str := "asd"
len(str)
如果需要獲得字元,應該這麼做:
package main
import "fmt"
func main()
}
輸出:
我與春風皆過客,你攜秋水攬星河。
標準庫中有四個包對字串處理尤為重要:bytes
、strings
、strconv
和unicode
包。
將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),如果base
為0
,則會從字串前置判斷,」0x」
是16
進製,」0」
是8
進製,否則是10
進製;
bitsize
指定結果必須能無溢位賦值的整數型別,0
、8
、16
、32
、64
分別代表int
、int8
、int16
、int32
、int64
;
func main()
當str
為:1
,t
,t
,true
,true
,true
中的一種時為真值當
str
為:0
,f
,f
,false
,false
,false
中的一種時為假值
func main()
bitsize
:32
或64
, 對應系統的位數
func main()
fmt.printf("type:%t value:%#v\n", str, str) // type:float64 value:250.56
}
bitsize
表示f的**型別(32
:float32
、64
:float64
),會據此進行捨入。
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
取值:uppercase
、lowercase
、titlecase
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訪問返回的...