## 實例
~~~
package main
import (
"os"
"bufio"
"time"
"io"
"github.com/axgle/mahonia"
"strings"
"fmt"
)
func main() {
file, _ := os.Open("G:\\pachong\\001.txt")
defer file.Close()
//準備一個優質數據文件
goodFile, _ := os.OpenFile("G:\\pachong\\001.txtkaifang_good.txt",
os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
defer goodFile.Close()
//準備一個錯誤數據文件
badFile, _ := os.OpenFile("G:\\pachong\\kaifang_bad.txt",
os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
defer badFile.Close()
//緩沖讀取
reader := bufio.NewReader(file)
//記錄用時
t := time.Now()
for {
//按行讀取
lineBytes, _, err := reader.ReadLine()
if err == io.EOF {
break
}
gbkStr := string(lineBytes)
// 編碼
lineStr := ConvertEncoding(gbkStr, "GBK")
//將行數據,按照逗號拆分
fields := strings.Split(lineStr, ",")
if len(fields) > 2 && len(fields[1]) == 18 {
//正確的數據
goodFile.WriteString(lineStr + "\n")
fmt.Println("Good:", lineStr)
} else {
//劣質文件
badFile.WriteString(lineStr + "\n")
fmt.Println("Bad:", lineStr)
}
}
// 返回一個時間差
end := time.Since(t)
fmt.Println("程序用時:", end)
}
//處理亂碼
func ConvertEncoding(srcStr string, encoding string) (dstStr string) {
enc := mahonia.NewDecoder(encoding)
utfStr := enc.ConvertString(srcStr)
dstStr = utfStr
return
}
~~~
- 一、數組
- 二、切片
- 三、copy
- 四、MAP
- 五、結構體
- 六、結構體參數
- 七、面向”對象“
- 1、匿名字段
- 2、方法
- 3、包和封裝
- 4、接口
- 5、異常處理
- 八、Json
- 九、文件操作
- 1、寫文件
- 2、讀取文件內容
- 3、拷貝文件
- 十、反射
- 1、查看類型,字段和方法
- 2、查看匿名字段
- 3、修改基本類型的值
- 4、修改結構體的值
- 5、調用方法
- 十一、并發編程
- 1、并行和并發
- 2、協程
- 3、runtime包
- 5、channel的使用
- 6、close
- 7、定時器
- 8、select
- 9、協程同步鎖
- 十二、socket編程
- 十三、Http編程
- 十四、并發爬蟲和數據處理
- 1、簡易爬蟲實例
- 2、并發爬取圖片
- 3、讀文件中的數據
- 4、數據清洗
- 其他
- 1、推薦文章