Go学习笔记

65 阅读1分钟

channel

package main

import (
	"fmt"
	"sync"
)

var ch = make(chan int)
var sum int

func worker(wg *sync.WaitGroup) {
	for {
		select {
		case num, ok := <-ch:
			if !ok {
				wg.Done()
				return
			}
			sum = sum + num
		}
	}
}

func producer() {
	for i := 0; i < 10; i++ {
		ch <- i
	}
	close(ch)
}

func main() {
	wg := sync.WaitGroup{}
	wg.Add(1)
	go worker(&wg)
	go producer()
	wg.Wait()
	fmt.Println(sum)
}

Gorm

package main

  


import (

"fmt"

  


"github.com/jinzhu/gorm"

_ "github.com/jinzhu/gorm/dialects/mysql"

)

  


type User struct {

gorm.Model

Name string

Gender string

}

  


func main() {

dbConn, err := gorm.Open("mysql", "root:1230123@tcp(172.17.0.1:3306)/test1?charset=utf8mb4&parseTime=True&loc=Local")

if err != nil {
    panic(err)
}

defer dbConn.Close()

ok := dbConn.HasTable(&User{})

if !ok {

    dbConn.AutoMigrate(&User{})

}

dbConn.Create(&User{
Name: "wg",
Gender: "男",
})
  
var user User

// find

dbConn.Table("users").First(&user)

fmt.Println(user.Name, user.Gender)

// update

dbConn.Table("users").Where("id=?", 1).Update(&User{Name: "ok", Gender: "test"})

// delete

dbConn.Table("users").Where("id=?", 2).Delete(&User{})

}