Golang中国

fanyang

Golang China 第 6369 号会员,加入于 2016-11-13 23:23


fanyang最近回复了


回复了 sax1412 创建的主题: gorm,怎么获取结果集呢? 2017-02-21 10:32
type Table struct{
        ID  int `gorm:"column:id;primary_key"`
        Name string `gorm:"column:name"`
}

var tables []Table
query:=db.where().find(&tables)
query.Error!=nil{
    panic(query.Error)
}
fmt.Println(tables)
回复了 sax1412 创建的主题: gorm,怎么获取结果集呢? 2017-02-21 10:29
type Table struct{
        ID  int `gorm:"column:id;primary_key"`
        Name string `gorm:"column:name"`
}

var tables []Table
query:=db.where().find(&tables)
query.Error!=nil{
    panic(query.Error)
}
fmt.Println(tables)
回复了 Zhangyc310 创建的主题: apache的https 证书给golang用,提示错误 :( 2017-02-21 09:25

mydomain_private.crt 存在这个文件?

回复了 devuser 创建的主题: 怎么定义不基于主键(PK)的外键呢? 2017-02-10 16:02

问题解决了?我用的是GORM,也是相同问题

回复了 Zhangyc310 创建的主题: gorm,怎么判断查询成功了呢? 2017-02-10 15:43

@jimmykuu 如何给gorm设置外键,通过外键可以获取主表里的数据 ?

回复了 tentim 创建的主题: golang如何实现调用打印机打印? 2017-02-09 08:59

1.用github.com\lxn\win类似的工具调用win API实现,标准库也提供”syscall”
2.参考C语言调用打印机,然后CGO

回复了 gopu369 创建的主题: golang NTLM认证问题 2017-02-08 17:53

就不贴代码了,NTLM认证参考
https://github.com/ThomsonReutersEikon/go-ntlm

回复了 natars 创建的主题: 如何动态创建对象? 2017-02-08 17:17

看到有点晚,希望帮助其他,可扩展生成任何所需文件

// test.go
package main

import (
    "encoding/xml"
    "html/template"
    "io/ioutil"
    "os"
    "os/exec"
)

type (
    Var struct {
        Name      string `xml:"name,attr"`
        Type      string `xml:"type,attr"`
        Sizelimit string `xml:"sizelimit,attr"`
    }
    Message struct {
        Name string `xml:"name,attr"`
        Vars []Var  `xml:"var"`
    }
    Xml struct {
        XMLName xml.Name `xml:"xml"`
        Message Message  `xml:"message"`
    }
)

const (
    fileName = "./message.go"
    cfgName  = "./message.xml"
    tplName  = "./message.tpl"
)

func main() {
    //解析配置文件
    cfgData, err := ioutil.ReadFile(cfgName)
    if err != nil {
        panic(err)
    }
    var x Xml
    err = xml.Unmarshal(cfgData, &x)
    if err != nil {
        panic(err)
    }
    //加载模板文件
    tplData, err := ioutil.ReadFile(tplName)
    if err != nil {
        panic(err)
    }
    msg := template.Must(template.New("message").Parse(string(tplData)))

    file, err := os.Create(fileName)
    if err != nil {
        panic(err)
    }
    defer file.Close()
    //用模板生成go文件
    err = msg.Execute(file, x)
    if err != nil {
        os.Remove(fileName)
        panic(err)
    }
    //自动格式化并且导入需要的包
    cmd := exec.Command("goimports", "-w", fileName)
    err = cmd.Run()
    if err != nil {
        os.Remove(fileName)
        panic(err)
    }
}
// message.xml
<xml>
 <message name="login">
  <var  name="username" type="string" sizelimit="32">
  </var>
  <var  name="password"  type="string" sizelimit="32">
  </var>
 </message>
</xml>
// message.tpl
package message

type message_{{.Message.Name}} struct { 
    {{range .Message.Vars}}{{.Name}} {{.Type}}
    {{end}}
}

func (m *message_{{.Message.Name}}) Read() { 
    {{range .Message.Vars}} fmt.Println(m.{{.Name}}) 
    {{end}}
}

func (m *message_{{.Message.Name}}) Write() { 
    {{range .Message.Vars}} m.{{.Name}}="hello" 
    {{end}}
}
// message.go
package message

import "fmt"

type message_login struct {
    username string
    password string
}

func (m *message_login) Read() {
    fmt.Println(m.username)
    fmt.Println(m.password)

}

func (m *message_login) Write() {
    m.username = "hello"
    m.password = "hello"

}
回复了 dyllen 创建的主题: slice的容量是怎回事? 2017-02-08 14:10
//长度是第二个参数,容量是三个参数
test := make([]string, 10, 11)
//len计算长度,cap计算容量
fmt.Println(len(test), cap(test))//10 11
//使用append追加元素会存放到空闲区域
test = append(test, "h")
fmt.Println(len(test), cap(test))//11 11
//如果超出容量值将扩展容量为原值*2
test = append(test, "h")
fmt.Println(len(test), cap(test))//12 22
fanyang 创建的更多回复