Golang 基础

Posted cx558

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang 基础相关的知识,希望对你有一定的参考价值。

1.go序列化,2.go读写文件,追加到文本方式,3.go的mysql增删改查操作

 

1.go系列化(引入encoding/json包)

package main
import (
    "fmt"
    "encoding/json"
)
type User struct {
   NickName string `json:"nickname"`
   Age int
   Birthday string
   Sex string
   Email string
   Phone string
  }
func main() {
     user1 := &User{  
      NickName: "上课看似",
      Age:  28,
      Birthday: "1990/12/12",
      Sex: "男",
      Email: "[email protected]",
      Phone: "13798491455",
      }
      data, err := json.Marshal(user1)
      if err != nil {
        fmt.Printf("json.marshal failed, err:", err)
       return
      }
      fmt.Println(string(data))

}

----------------------------------------end----------------------------------------------------

 

2.go读写文件,追加方式(引入io/ioutil,os 包)

ioutil.ReadFile读文件方法,

package main
import(
 "io/ioutil"
 "fmt"
 "os"
)
func main(){
  read, err := ioutil.ReadFile("log.txt")
  if err != nil{
    fmt.Print(err)
  }
 
  str :=string(read)
  fmt.Println(str)
 
    data := " hello haha ";
    appendToFile("log.txt",data)
}


func appendToFile(fileName string, content string) error {
 // 以只写的模式,打开文件
   f, err := os.OpenFile(fileName, os.O_WRONLY, 0644)
   if err != nil {
   fmt.Println("cacheFileList.yml file create failed. err: " + err.Error())
   } else {
   // 查找文件末尾的偏移量
   n, _ := f.Seek(0, os.SEEK_END)
   // 从末尾的偏移量开始写入内容
   _, err = f.WriteAt([]byte(content), n)
   }
   defer f.Close()
   return err
  }

---------------------------------------------------End---------------------------------------------------------------------

3.go的mysql操作

要安装mysql 包 go get github.com/go-sql-driver/mysql (成功执行pkg和src生成包文件)

 

技术分享图片

 

失败,确定GO环境配置成功,( https://www.cnblogs.com/wangqishu/p/5147108.html) 

 

package main
import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
    //"strconv"
    //"encoding/json"
)
type Users struct{
       id int
       uid int
       token string

}
func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}
func main() {
    db, err := sql.Open("mysql", "root:[email protected](127.0.0.1:3306)/shoxot?charset=utf8")
    checkErr(err)
    
    //插入数据
    stmt,err:= db.Prepare("INSERT ot_token SET uid=?,token=?")
    checkErr(err)
    res, err := stmt.Exec(1008,"12312sfsdasd")
    checkErr(err)
    
    //获取永远id
    id, err:=res.LastInsertId()
    checkErr(err)
    fmt.Println(id)
    
    
    //修改数据    
    stmt, err = db.Prepare("UPDATE ot_token set uid=?,token=? where id=?")
    res, err = stmt.Exec(1055,"sss1111",108)
    affect, err := res.RowsAffected()
    fmt.Println(affect)
    
    
    //查询数据
    
    var users []Users = make([]Users,0)
    rows, err :=db.Query("select * from ot_token limit 10")
    for rows.Next() {
      var u Users
      rows.Scan(&u.id,&u.uid,&u.token)    
      users = append(users,u)      
    }
    //data, err := json.Marshal(users)
    fmt.Println(users)
    defer db.Close()

        
}

 























































































































以上是关于Golang 基础的主要内容,如果未能解决你的问题,请参考以下文章

Golang基础教程

golang简明入门进阶指南01golang基础变量函数条件控制

golang简明入门进阶指南01golang基础变量函数条件控制

golang之基础使用

万字Golang基础知识(肝爆三天三夜,手撕Golang基本语法结构)

golang mongo-driver filter 构建--bson和golang基础类型