1 第一單元 常用標準包(一) 2 3 1.學習目標 4 5 1. 掌握strings常用函數使用 6 2. 掌握strconv常用函數使用 7 3. 熟悉encoding常用函數使用 8 9 2.strings標準包 10 11 2.1 Contains 12 13 用途:字元串包含關係 14 1 ...
1 第一單元 常用標準包(一) 2 3 1.學習目標 4 5 1. 掌握strings常用函數使用 6 2. 掌握strconv常用函數使用 7 3. 熟悉encoding常用函數使用 8 9 2.strings標準包 10 11 2.1 Contains 12 13 用途:字元串包含關係 14 15 用法: strings.Contains(s, substr string) bool 16 17 代碼示例 18 19 package main 20 21 import ( 22 "fmt" 23 "strings" 24 ) 25 26 func main() { 27 studentName := "Jim" 28 fmt.Println(strings.Contains(studentName, "im")) //包含關係 true/false 29 30 } 31 32 33 2.2 HasSuffix 34 35 用途:包含首碼 36 37 用法: strings.HasSuffix(s, substr string) bool 38 39 代碼示例 40 41 studentName := "Jim" 42 fmt.Println(strings.HasSuffix(studentName, "im")) 43 44 2.3 HasPrefix 45 46 用途:首碼 47 48 用法:strings.HasPrefix(s, prefix string) bool 49 50 代碼示例 51 52 package main 53 54 import ( 55 "fmt" 56 "strings" 57 ) 58 59 func main() { 60 61 studentName := "Jim" 62 fmt.Println(strings.HasSuffix(studentName, "im")) 63 64 } 65 66 67 2.4 Index 68 69 用途:子串索引 70 71 用法:strings.Index(s, str string) int 72 73 Index返回字元串str在字元串s中的索引(str的第一個字元的索引) 74 75 -1表示字元串s不包含字元串str 76 77 代碼示例 78 79 package main 80 81 import ( 82 "fmt" 83 "strings" 84 ) 85 86 func main() { 87 str := "hello" 88 fmt.Println(strings.Index(str, "e")) 89 } 90 91 2.5 Replace 92 93 用途:字元串替換 94 95 用法:strings.Replace(s, old, new string, n int) string 96 97 代碼示例 98 99 package main 100 101 import ( 102 "fmt" 103 "strings" 104 ) 105 106 func main() { 107 str := "goooooole" 108 fmt.Println(strings.Replace(str, "o", "P", -1)) 109 110 fmt.Println("non-overlapping: ") 111 // n < 0 ,用 替換所有匹配;n=-1: 112 fmt.Println("n=-1: ", strings.Replace(str, "o", "P", -1)) 113 114 // 不替換任何匹配的 n=0: 115 fmt.Println("n=0: ", strings.Replace(str, "o", "P", 0)) 116 117 // 替換第一個匹配的 old;n=1: 118 fmt.Println("n=1: ", strings.Replace(str, "o", "P", 1)) 119 120 // 替換前 5 個匹配的;n=5: 121 fmt.Println("n=5: ", strings.Replace(str, "o", "P", 5)) 122 123 // 替換前 7 個匹配上的;n=7: 124 fmt.Println("n=7: ", strings.Replace(str, "o", "P", 7)) 125 } 126 127 128 129 2.6 join 130 131 用途:把[]string的切片合併成一個string,並且以sep為分隔符 132 133 用法: strings.Join(s []string,sep string) string 134 135 代碼示例 136 137 package main 138 139 import ( 140 "fmt" 141 "strings" 142 ) 143 144 func main() { 145 a := "hahaha" 146 b := "hehehe" 147 c := strings.Join([]string{a, b}, ",") 148 fmt.Println(c) 149 150 } 151 152 2.8 Split 153 154 用途:切割字元串為數組 155 156 用法:array strings.Split(s,sep) 157 158 示例: 159 160 package main 161 162 import ( 163 "fmt" 164 "strings" 165 ) 166 167 func main() { 168 s := strings.Split("a,b,c,d", ",") 169 fmt.Println(s) 170 171 } 172 173 2.9 ToUpper 174 175 用途:轉為小寫 176 177 用法:strings.ToUpper(s) string 178 179 package main 180 181 import ( 182 "fmt" 183 "strings" 184 ) 185 186 func main() { 187 str2 := "hello,world" 188 fmt.Println(strings.ToUpper(str2)) //轉為大寫 輸出結果:HELLO,WORLD 189 190 } 191 192 193 194 2.10 ToLower 195 196 用途:轉為小寫 197 198 用法:strings.ToLower(string) string 199 200 package main 201 202 import ( 203 "fmt" 204 "strings" 205 ) 206 207 func main() { 208 str2 := "hello,world" 209 fmt.Println(strings.ToLower(str2)) //轉為小寫 輸出結果:HELLO,WORLD 210 } 211 212 213 2.11 Trim 214 215 用途:返回將 s 前後端所有 cutset 包含的 utf-8 碼值都去掉的字元串 216 217 用法:strings.Trim(s string, cutset string) string 218 219 package main 220 221 import ( 222 "fmt" 223 "strings" 224 ) 225 func main() { 226 str2 := " hello,world |" 227 fmt.Println(strings.Trim(str2, "|")) 228 229 } 230 231 232 233 2.12 TrimSpace 234 235 用途:將最前面和最後面的ASCII定義的空格去掉,中間的空格不會去掉,如果遇到了\0等其他字元會認為是非空格 236 237 用法:strings.TrimSpace(s string) string 238 239 package main 240 241 import ( 242 "fmt" 243 "strings" 244 ) 245 246 func main() { 247 str2 := " hello,world " 248 fmt.Println(strings.TrimSpace(str2)) //轉為大寫 輸出結果:HELLO,WORLD 249 250 } 251 252 2.13 TrimLeft 253 254 用途:去掉字元串首cut字元 255 256 用法:strings.TrimLeft(str string, cut string) 257 258 package main 259 260 import ( 261 "fmt" 262 "strings" 263 ) 264 265 func main() { 266 str2 := " hello,world " 267 fmt.Println(strings.TrimLeft(str2, " ")) 268 } 269 270 271 2.14 TrimRight 272 273 用途:去掉字元串末尾cut字元 274 275 用法:strings.TrimSpace(s string) string 276 277 package main 278 279 import ( 280 "fmt" 281 "strings" 282 ) 283 284 func main() { 285 str2 := " hello,world " 286 fmt.Println(strings.TrimRight(str2)) //轉為大寫 輸出結果:HELLO,WORLD 287 288 } 289 290 291 292 3.strconv標準包 293 294 3.1 Atoi() 295 296 用途:字元串轉換為整型 297 298 用法:strconv.Atoi(string) 299 300 示例: 301 302 package main 303 304 import ( 305 "fmt" 306 "strconv" 307 ) 308 309 func main() { 310 //strconv的使用 311 312 s1 := "100" 313 fmt.Printf("s1轉換之前的類型:%T\n", s1) 314 i1, err := strconv.Atoi(s1) 315 if err != nil { 316 fmt.Println("can't convert to int") 317 } else { 318 fmt.Printf("type:%T value:%v\n", i1, i1) //type:int value:100 319 } 320 321 i2 := 200 322 s2 := strconv.Itoa(i2) 323 fmt.Printf("type:%T value:%v\n", s2, s2) //type:string value:"200" 324 325 } 326 327 2.8 Itoa() 328 329 用途:整型轉為字元串 330 331 用法:int strings.Itoa(s) 332 333 示例: 334 335 package main 336 337 import ( 338 "fmt" 339 "strconv" 340 ) 341 342 func main() { 343 //strconv的使用 344 i2 := 200 345 s2 := strconv.Itoa(i2) 346 fmt.Printf("type:%T value:%v\n", s2, s2) //type:string value:"200" 347 348 } 349 350 351 352 4.encoding標準包 353 354 4.1 base64編碼概念 355 356 Base64是一種最常見的用於傳輸8Bit位元組碼的編碼方式 357 358 4.2 base64 編碼 359 360 用途:base64編碼 361 362 用法:string base64.StdEncoding.EncodeToString(string) 363 364 示例: 365 366 package main 367 368 import ( 369 "encoding/base64" 370 "fmt" 371 ) 372 373 func main() { 374 input := []byte("hello world") 375 // 演示base64編碼 376 encodeString := base64.StdEncoding.EncodeToString(input) 377 fmt.Println(encodeString) 378 379 } 380 381 4.3 base64 解碼 382 383 用途:base64解碼 384 385 用法: base64.StdEncoding.DecodeString(string) string 386 387 示例: 388 389 package main 390 391 import ( 392 "fmt" 393 "encoding/base64" 394 ) 395 396 func main() { 397 input := []byte("hello world") 398 // 演示base64編碼 399 encodeString := base64.StdEncoding.EncodeToString(input) 400 fmt.Println(encodeString) 401 402 // 對上面的編碼結果進行base64解碼 403 decodeBytes, err := base64.StdEncoding.DecodeString(encodeString) 404 if err != nil { 405 log.Fatalln(err) 406 } 407 fmt.Println(string(decodeBytes)) 408 409 }