Json parsing
package main
import (
"encoding/json"
"fmt"
"os"
)
type MongoConfig struct {<!-- -->
MongoAddr string
MongoPoolLimit int
MongoDB string
MongoCollection string
}
type Config struct {<!-- -->
Port string
Mongo MongoConfig
}
func main() {<!-- -->
JsonParse := NewJsonStruct()
v := Config{<!-- -->}
if err := JsonParse.Load("json_parse.json", & amp;v); err != nil {<!-- -->
fmt.Println("Error loading configuration:", err)
return
}
fmt.Println("Port:", v.Port)
fmt.Println("MongoDb:", v.Mongo.MongoDb)
}
type JsonStruct struct{<!-- -->}
func NewJsonStruct() *JsonStruct {<!-- -->
return &JsonStruct{<!-- -->}
}
func (js *JsonStruct) Load(filename string, v interface{<!-- -->}) error {<!-- -->
data, err := os.ReadFile(filename)
if err != nil {<!-- -->
return err
}
if err = json.Unmarshal(data, v); err != nil {<!-- -->
return err
}
return nil
}
Generate Json
package main
import (
"encoding/json"
"fmt"
"os"
)
type User struct {<!-- -->
UserName string
NickName string `bson:"nickName"`
Email string
}
func main() {<!-- -->
user := & amp;User{<!-- -->
UserName: "Jack",
NickName: "Ma",
Email: "[email protected]",
}
data, err := json.Marshal(user)
if err != nil {<!-- -->
fmt.Printf("json.Marshal failed,err:", err)
return
}
fmt.Printf("%s\\
", string(data))
file, _ := os.Create("json_write.json")
defer file.Close()
file.Write(data)
}
Regexp package application example
Match phone numbers
package main
import (
"fmt"
"regexp"
)
func findPhoneNumber(str string) bool {<!-- -->
reg := regexp.MustCompile("^1[1-9]{10}")
res := reg.FindAllString(str, -1)
if res == nil {<!-- -->
return false
}
return true
}
func main() {<!-- -->
res2 := findPhoneNumber("13688888888")
fmt.Println(res2)
res2 = findPhoneNumber("02888888888")
fmt.Println(res2)
res2 = findPhoneNumber("123456789")
fmt.Println(res2)
}
Match Email
package main
import (
"fmt"
"regexp"
)
func findEmail(str string) bool {<!-- -->
reg := regexp.MustCompile("^[a-zA-Z0-9_] + @[a-zA-Z0-9] + \.[a-zA-Z0-9] + ")
res := reg.FindAllString(str, -1)
if res == nil {<!-- -->
return false
}
return true
}
func main() {<!-- -->
res2 := findEmail("[email protected]")
fmt.Println(res2)
res2 = findEmail("[email protected]")
fmt.Println(res2)
res2 = findEmail("8888@qqcom")
fmt.Println(res2)
}
Export CSV file from database
Mysql
CREATE DATABASE UserManager;
USEUserManager;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`uid` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT '',
`phone` varchar(20) DEFAULT '',
`email` varchar(30) DEFAULT '',
`password` varchar(100) DEFAULT '',
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='User Table';
BEGIN;
INSERT INTO `user` VALUES (1, 'shirdon', '1888888888', '[email protected]', '');
INSERT INTO `user` VALUES (2, 'barry', '18788888888', '[email protected]', '');
COMMIT;
Go
package main
import (
"database/sql"
"encoding/csv"
"fmt"
_ "github.com/go-sql-driver/mysql"
"log"
"os"
"strconv"
)
var db *sql.DB
type User struct {<!-- -->
Uid int
Name string
Phone string
Email string
Password string
}
//Define a global variable
var uUser
//Initialize database connection
func init() {<!-- -->
db, _ = sql.Open("mysql",
"account:password@tcp(127.0.0.1:3306)/UserManager?" +
"charset=utf8mb4 & amp;parseTime=True & amp;loc=Local")
}
func main() {<!-- -->
//Define the exported file name
filename := "./exportUsers.csv"
//Get data from database
users := queryMultiRow()
//Define a two-dimensional array
column := [][]string{<!-- -->{<!-- -->"Mobile phone number", "User UID", "Email", "Username" }}
for _, u := range users {<!-- -->
str := []string{<!-- -->}
str = append(str, u.Phone)
str = append(str, strconv.Itoa(u.Uid))
str = append(str, u.Email)
str = append(str, u.Name)
column = append(column, str)
}
//Export
ExportCsv(filename, column)
}
//Export csv file
func ExportCsv(filePath string, data [][]string) {<!-- -->
fp, err := os.Create(filePath) //Create file handle
if err != nil {<!-- -->
log.Fatalf("Failed to create file[" + filePath + "] handle, %v", err)
return
}
defer fp.Close()
fp.WriteString("\xEF\xBB\xBF") //Write UTF-8 BOM
w := csv.NewWriter(fp) //Create a new writing file stream
w.WriteAll(data)
w.Flush()
}
// Query multiple pieces of data
func queryMultiRow() []User {<!-- -->
rows, err := db.Query("select uid,name,phone,email from `user` where uid > ?", 0)
if err != nil {<!-- -->
fmt.Printf("query failed, err:%v\\
", err)
return nil
}
//Close rows and release the held database link
defer rows.Close()
//Loop to read the data in the result set
users := []User{<!-- -->}
for rows.Next() {<!-- -->
err := rows.Scan( & amp;u.Uid, & amp;u.Name, & amp;u.Phone, & amp;u.Email)
users = append(users, u)
if err != nil {<!-- -->
fmt.Printf("scan failed, err:%v\\
", err)
return nil
}
}
return users
}
Processing log files
Print General Log
package main
import (
"log"
)
func main() {<!-- -->
no := []int{<!-- -->6, 8}
log.Print("Print NO. ", no, "\\
")
log.Println("Println NO.", no)
log.Printf("Printf NO. with item [%d,%d]\\
", no[0], no[1])
}
Panic accident log
package main
import (
"log"
)
func main() {<!-- -->
no := []int{<!-- -->6, 8}
log.Panicln("Println NO.", no)
}
Fatal fatal log
package main
import (
"log"
)
func main() {<!-- -->
no := []int{<!-- -->6, 8}
log.Fatalln("Println NO.", no)
}
Custom log
package main
import (
"log"
"os"
)
func main() {<!-- -->
fileName := "New.log"
logFile, err := os.Create(fileName)
defer logFile.Close()
if err != nil {<!-- -->
log.Fatalln("open file error")
}
debugLog := log.New(logFile, "[Info]", log.Llongfile)
debugLog.Println("Info Level Message")
debugLog.SetPrefix("[Debug]")
debugLog.Println("Debug Level Message")
}