Parcourir la source

add 18.0 and 18.1

songleo il y a 10 ans
Parent
commit
e44f5d7257
2 fichiers modifiés avec 65 ajouts et 1 suppressions
  1. 7 1
      eBook/18.0.md
  2. 58 0
      eBook/18.1.md

+ 7 - 1
eBook/18.0.md

@@ -1 +1,7 @@
-test
+# 18 出于性能考虑的实用代码片段
+
+## 链接
+
+- [目录](directory.md)
+- 上一节:[运算符模板和接口](17.4.md)
+- 下一节:[字符串](18.1.md)

+ 58 - 0
eBook/18.1.md

@@ -0,0 +1,58 @@
+# 18.1 字符串
+
+(1)如何修改字符串中的一个字符:
+
+```go
+str:="hello"
+c:=[]byte(s)
+c[0]='c'
+s2:= string(c) // s2 == "cello"
+```
+
+(2)如何获取字符串的子串:
+
+```go
+substr := str[n:m]
+```
+
+(3)如何使用for或者for-range遍历一个字符串:
+
+```go
+// gives only the bytes:
+for i:=0; i < len(str); i++ {
+… = str[i]
+}
+// gives the Unicode characters:
+for ix, ch := range str {
+…
+}
+```
+
+(4)如何获取一个字符串的字节数:`len(str)`
+    如何获取一个字符串的字符数:
+    最快速:`utf8.RuneCountInString(str)`
+    
+    `len([]int(str)) //TBD`
+
+(5)如何连接字符串:
+    最快速: `with a bytes.Buffer`(参考[章节7.2](7.2.md))
+
+    `Strings.Join()`(参考[章节4.7](4.7.md))
+    
+    `+=`
+
+    ```go
+    str1 := "Hello " 
+    str2 := "World!"
+    str1 += str2 //str1 == "Hello World!"
+   ```
+
+(6)如何解析命令行参数:使用os或者flag包
+
+    (参考[例12.4](examples/chapter_12/fileinput.go))
+
+## 链接
+
+- [目录](directory.md)
+- 上一节:[出于性能考虑的实用代码片段](18.0.md)
+- 下一节:[数组和切片](18.2.md)