回复了 af913337456 创建的主题: unsafe.Pointer 面试题,几乎没几个人答得对,有人知道答案的原因吗?
fun1结果:空,整型指针不允许赋值字符指针,相反就可以,所以c是空指针,存放”44”时无效;
fun2结果:44,可以不用Pointer转换;
fun3结果:445,c的地址还是空,只不过不是往地址里存放值
fanyang
回复了 af913337456 创建的主题: unsafe.Pointer 面试题,几乎没几个人答得对,有人知道答案的原因吗?
fun1结果:空,整型指针不允许赋值字符指针,相反就可以,所以c是空指针,存放”44”时无效;
fun2结果:44,可以不用Pointer转换;
fun3结果:445,c的地址还是空,只不过不是往地址里存放值
回复了 Tommy4021 创建的主题: 求助 如何用go 写一个类似 redis的 server
用map解决大部分数据类型,例如集合:
package set
type Set Struct{
m map[interface{}]bool
}
func NewSet *Set{
return &Set{m:make(map[interface{}]bool)}
}
func (set *Set) Add(e interface{})bool {
if !set.m[e]{
set.m[e]=true
return true
}
return false
}
func (set *Set) Remove(e interface{}) {
delete(set.m,e)
}
func (set *Set) Contains(e interface{})bool {
return set.m[e]
}
回复了 leedstyh 创建的主题: 抓取一个页面,返回错误`x509: certificate signed by unknown authority`,请问该如何解决?浏览器访问正常,我抓取的是http页面,但是服务器有时候会返回https的,这时候就会出现上述错误。请教1)如果解决上述错误,2)能否设置一下,让服务器不要跳转到https页面。
服务器可能设置了代理,你可以试着抓取其他页面,代码都没有不好分析
回复了 sax1412 创建的主题: 导出excel报错,求助
可能返回错误,file = nil
file,err:=xlsx.OpenFile()
//print err
回复了 netaxcess 创建的主题: golang读mysql中的null值的问题
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
func main() {
db, err := gorm.Open("mysql", "root:mima@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic(err)
}
defer db.Close()
rows, err := db.Raw(`SELECT * from goods`).Rows()
if err != nil {
panic(err)
}
for rows.Next() {
var (
goods_id int
goods_name, goods_desc, bref string
)
err = rows.Scan(&goods_id, &goods_name, &goods_desc, &bref)
if err != nil {
panic(err)
}
fmt.Println(goods_id, goods_name, goods_desc, bref)
}
}
回复了 wangxufire 创建的主题: Go http client怎么使用shadowsocks代理?
看看源码说不定你能找到答案
github.com/shadowsocks/shadowsocks-go
回复了 fighting 创建的主题: go 的一个问题,不知是坑不是坑
服務端用req.Header.Get(“authtoken”)是可以获取到值的,不区分大小写
回复了 sang 创建的主题: beego 使用连接mysql 报错 register db Ping `default`, default addr for network '123.56.95.103' unknown must have one register DataBase alias named `default
orm.RegisterDataBase("default", "mysql", "root:xxxxx@tcp(123.56.95.183:3306)/qianbao_test")
回复了 sax1412 创建的主题: gorm,怎么获取结果集呢?
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,怎么获取结果集呢?
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用,提示错误 :(
mydomain_private.crt 存在这个文件?
回复了 devuser 创建的主题: 怎么定义不基于主键(PK)的外键呢?
问题解决了?我用的是GORM,也是相同问题
回复了 Zhangyc310 创建的主题: gorm,怎么判断查询成功了呢?
@jimmykuu 如何给gorm设置外键,通过外键可以获取主表里的数据 ?
回复了 tentim 创建的主题: golang如何实现调用打印机打印?
1.用github.com\lxn\win类似的工具调用win API实现,标准库也提供”syscall”
2.参考C语言调用打印机,然后CGO
回复了 gopu369 创建的主题: golang NTLM认证问题
就不贴代码了,NTLM认证参考
https://github.com/ThomsonReutersEikon/go-ntlm
看到有点晚,希望帮助其他,可扩展生成任何所需文件
// 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的容量是怎回事?
//长度是第二个参数,容量是三个参数
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