go語言的字元有以下兩種型別:
byte型別:是uint8
的別名,代表乙個ascii碼。
rune型別:是int32
的別名,代表乙個utf-8字元,由乙個或多個byte組成。例如:乙個中文字元或者日文字元。
字串底層是乙個byte陣列,所以可以和byte型別相互轉換,字串的長度是byte位元組的長度。
s :=
"hello 你好"
for i :=
0; i <
len(s)
; i++
fmt.
println()
for i, v :=
range s
// output:
// 72(h) 0 101(e) 1 108(l) 2 108(l) 3 111(o) 4 32( ) 5 228(ä) 6 189(½) 7 160( ) 8 229(å) 9 165(¥) 10 189(½) 11
// 72(h) 0 101(e) 1 108(l) 2 108(l) 3 111(o) 4 32( ) 5 20320(你) 6 22909(好) 9
utf8編碼中,乙個中文漢字由3~4個byte組成,所以我們不能簡單的按照位元組去遍歷乙個包含中文的字串,否則就會出現上面輸出中第一行的結果。
go語言支援的兩種浮點型資料:float32
和float64
。
有兩種複數型別:complex64
和complex128
。
複數有實部和虛部,complex64的實部和虛部為32位,complex128的實部和虛部為64位。
型別關鍵字:bool
。取值只有true和false,不允許將整型強制轉換為bool型。
預設初始值為false。
型別關鍵字:string
。go 語言裡的字串的內部實現使用utf-8編碼。 多行字串定義,使用反引號
。如下:
s1 :=
`第一行
第二行第三行
`
// 求長度
s1 :=
"hello"
s2 :=
"你好"
//乙個中文字元佔3個位元組
s3 :=
"おはよう"
fmt.
printf
("s1 = %s, length = %d \n"
, s1,
len(s1)
)// len = 5
fmt.
printf
("s2 = %s, length = %d \n"
, s2,
len(s2)
)// len = 6
fmt.
printf
("s3 = %s, length = %d \n"
, s3,
len(s3)
)// len = 12
// 字串拼接
fmt.
printf
("%s \n"
, s1+
" = "
+s2)
s := fmt.
sprintf
("%s = %s"
, s1, s3)
fmt.
printf
("%s \n"
, s)
// 字串分割
s :=
"this is a book"
words := strings.
split
(s," "
) fmt.
printf
("%#v"
, words)
//output: string
// 判斷是否包含某特定子字串
s :=
"this is a book"
b := strings.
contains
(s,"is"
)println
(b)// output: true
// 判斷是否包含某字首/字尾
s :=
"this is a book"
bpre := strings.
hasprefix
(s,"this"
) bsuf := strings.
hassuffix
(s,"test"
) fmt.
printf
("prefix is existing:%t \n"
, bpre)
fmt.
printf
("suffix is existing:%t \n"
, bsuf)
// output: prefix is existing:true
// suffix is existing:false
// 子字串出現的index,index從0開始計數
s :=
"this is a book"
i := strings.
index
(s,"i"
) l := strings.
lastindex
(s,"i"
) fmt.
printf
(" 第乙個i得位置是:%d \n"
, i)
fmt.
printf
(" 最後乙個i得位置是:%d \n"
, l)
// output:
// 第乙個i得位置是:2
// 最後乙個i得位置是:5
s :=
" and "
arr :=
string
x := strings.
join
(arr, s)
fmt.
println
(x)// output: aa and bb and cc
string儲存的字串是不可變的,要修改字串,需要先將其轉換成rune
或byte
,修改後再轉換為string
。修改後的string內容儲存在重新分配的記憶體。
s1 :=
"big"
// 強制型別轉換 string -> byte
bytes1 :=
byte
(s1)
bytes1[0]
='p'
fmt.
println
(string
(bytes1)
) s2 :=
"hello你好"
// 強制型別轉換 string -> rune
runes2 :=
rune
(s2)
runes2[5]
='您'
fmt.
println
(string
(runes2)
)
小白學習之go 基本資料型別
型別 描述uint8 無符號8位整型 0到2 8 1 uint16 無符號16位整型 0到2 16 1 uint32 無符號32位整型 0到2 32 1 uint64 無符號64位整型 0到2 64 1 int8 有符號8位整型 2 8 到2 8 1 int16 有符號16位整型 2 16 到2 1...
基本資料型別 4
pow x,y pow x,y 函式,計算x的y次方 解決不確定尾數,引進 round x,d 對x四捨五入,d是小數擷取位數 浮點數間運算及比較用round 函式輔助 不確定尾數一般發生在10的 16次方左右,round 函式十分有效 e 表示a 10的b次方 數值運算函式 一些以函式形式提供的數...
C 學習筆記之基本資料型別
1 型別推斷 使用關鍵字 var修飾 2 常量 使用關鍵字 const 修飾 3 整型 3.1 sbyte 8位有符號整數 3.2 byte 8位無符號整數 3.3 short 16位有符號整數 3.4 ushort 16位無符號整數 3.5 int 32位有符號整數 3.6 uint 32位無符號...