Golang 中国

xjjrocker

Golang China 第 6397 号会员,加入于 2016-11-18 11:07



go new user

xjjrocker最近回复了


回复了 sax1412 创建的主题: jinzhu/gorm 这个包 请问怎么处理复杂的sql语句呢 2018-02-12 09:15

用过beego的orm很好用
尝试过xorm也还不错
但看到gorm那么多star我以为很好用,但实际上很怀疑那么多的star和fork是怎么产生的,批量删除的逻辑很反人类,一个批量查询的删除,竟然直接删除整个表的数据,而不是查询条件出来的数据。反馈了这个问题还直接关闭,说不支持,哈哈。
好神奇的思路。
目前来看就推荐前两者。

回复了 xjjrocker 创建的主题: char* Zqdm[]如何更改成golang的入参呢 2018-01-18 11:06

自己来把解决思路放上来,给后来者参考吧:

//C
myfunc(byte Market[], char* Zqdm[], short& Count)

这个函数用golang重新定义

//go
func myfunc(Market []byte, Zqdm []string, Count int) bool {
    ...
}

难点也是重点的是,原来的char* Zqdm[]虽然在go里面用了Zqdm []string,但不代表这样就可以了,其实应注意原来的数组是指针数组,所以我们变成字符串数组后,但真正的调用的地方这个字符串数组要转成指针数组([] *byte)。

回复了 cjh6393 创建的主题: Cgo编程c语言指针的问题 2018-01-18 10:56

你这个问题是c和go的类型对应关系问题,你一个小片段,任谁也说不了答案呢;至于解决方式,那就更不知道怎么回复啊,不明确的问题,太宽泛。
以下供参考:go和c之间的类型转换

char -->  C.char -->  byte
signed char -->  C.schar -->  int8
unsigned char -->  C.uchar -->  uint8
short int -->  C.short -->  int16
short unsigned int -->  C.ushort -->  uint16
int -->  C.int -->  int
unsigned int -->  C.uint -->  uint32
long int -->  C.long -->  int32 or int64
long unsigned int -->  C.ulong -->  uint32 or uint64
long long int -->  C.longlong -->  int64
long long unsigned int -->  C.ulonglong -->  uint64
float -->  C.float -->  float32
double -->  C.double -->  float64
wchar_t -->  C.wchar_t  -->  
void * -> unsafe.Pointer

另外需注意 c的char* [],在go就是[] *byte

回复了 tiger1103 创建的主题: go调用dll中方法参数为*char类型 2018-01-17 15:17

把:

    var a byte
       ...
    uintptr(unsafe.Pointer(&a))

改成:

    var a = make([]byte, 256)
       ...
    uintptr(unsafe.Pointer(&a[0]))

试试。

回复了 lvlv 创建的主题: golang 调用存储mysql存储过程 如何获取多个结果集 2018-01-17 15:06

自己组装后返回啊。

回复了 Alber 创建的主题: 64行代码实现零拷贝go的TCP拆包粘包 2018-01-17 15:01

mark;回头试试是否比我的效率高!

回复了 rockman 创建的主题: golangtc.com经常不能访问。 网络:上海电信 2017-12-05 16:07

坐标上海陆家嘴,经常不能访问,翻墙才可以。
今天发钱奇葩事件ie、360、vivaldi、chrome都打不开,但firefox却可以!

回复了 xjjrocker 创建的主题: java的连接wss的websocket服务器代码如何转成go代码 2017-06-24 20:12

自己解决了,主要是网上找来找去都没有go作为websocket的client去连接wss服务器的,这里给出解决方案,以供后来人借鉴。

import (
    "crypto/tls"
    "github.com/gorilla/websocket"
)

func main() {
url := "wss://xxx.xxx.xxx.xxx:8088"
config := tls.Config{InsecureSkipVerify: true}
websocket.DefaultDialer.TLSClientConfig = &config
conn, _, err := websocket.DefaultDialer.Dial(url, nil)
if err != nil {
    fmt.Printf("err=" + err.Error())
}
defer conn.Close()
fmt.Println("connect ", url, " success")
}
回复了 gogoogogogo 创建的主题: golang float64*float64 精度出现偏差要怎么解决啊?急急急急急急, 2017-06-15 09:20

strconv.FormatFloat(c, 'f', 3, 64)就可以了

回复了 xjjrocker 创建的主题: char* Zqdm[]如何更改成golang的入参呢 2017-06-10 21:11

@xiongfei @ThoseFlowers ,请c和go底层都熟识的也能给予指导,多谢!

xjjrocker 创建的更多回复