学习golang(day 13)- json、mysql 2022-05-29 23:27:00 编程 golang 暂无评论 417 次阅读 1998字 修改时间:2022-05-29 23:52:23 #json golang 提供的 json 包可以可以把 json 字符串转换为 struct ,或者将 struct 转换为 json **两个核心函数** struct 转为 json,接收任意类型 ```go Marshal(v interface)([]byte,error) ``` json 转为 struct ```go Unmarshal(date []byte,v interface)error ``` **示例** ```go // 序列化成Json,结构体首字母必须大写 type Person struct{ Name string Age int Email string } // 结构体转换为json字符串 func toJson() { p := Person{Name: "张三",Age: 18,Email: "123@qq.com"} json, _ := json.Marshal(p) // 输出 {"Name":"张三","Age":18,"Email":"123@qq.com"} fmt.Println(string(json)) } // json 转换为结构体 func jsonToStruct() { jsonByte := []byte(`{"Name":"张三","Age":18,"Email":"123@qq.com"}`) var p Person json.Unmarshal(jsonByte, &p) // 输出 {张三 18 123@qq.com} fmt.Println(p) } // json 转换为 Map func jsonToMap() { jsonByte := []byte(`{"Name":"张三","Age":18,"Email":"123@qq.com","Parents":["张爸"]}`) var p map[string]interface{} // 返回 map json.Unmarshal(jsonByte, &p) // 输出 map[Age:18 Email:123@qq.com Name:张三 Parents:[张爸]] fmt.Println(p) for k,v := range p { fmt.Println(k,v) } } ``` ------------ #mysql golang 连接 mysql,今天只接触了初始化连接,CRUD明天继续 **安装驱动** ```go go get -u github.com/go-sql-driver/mysql ``` **初始化模块** ```go go mod init m ``` **执行go mod tidy** ```go go mod tidy ``` 示例 ```go import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "time" ) func initDB() error { dsn := "root:root123@tcp(127.0.0.1:3306)/go_db?charset=utf8mb4&parseTime=True" // 不会校验账号密码是否正确 // 注意,这里不要使用 :=, 我们是全局变量赋值,让后在main中使用全局变量 db db, err := sql.Open("mysql", dsn) if err != nil { return err } // 最大连接时长 db.SetConnMaxLifetime(time.Minute * 3) // 最大连接数 db.SetMaxOpenConns(10) // 最大空闲数 db.SetMaxIdleConns(10) // 这里才会与数据库建立连接,校验dsn的账号密码 err = db.Ping() if err != nil { return err } return nil } func main() { err := initDB if err() != nil { fmt.Println(err()) }else{ fmt.Println("初始化成功") } } ``` 标签: golang
评论已关闭