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
dbConn.Table("users").First(&user)
fmt.Println(user.Name, user.Gender)
dbConn.Table("users").Where("id=?", 1).Update(&User{Name: "ok", Gender: "test"})
dbConn.Table("users").Where("id=?", 2).Delete(&User{})
}