初级会员
  • 第 8149 位会员
  • Cynhard
  • comaxy@126.com
  • 2017-04-23 19:50:50
  • Offline
  • 0

最近发布的主题

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • _4byte2int将byte切片转换为int,属于底层操作,需要用到[Go低级编程](http://blog.csdn.net/u011304970/article/details/69908641#lowLevel)的知识。 ```go func _4byte2int(bs []byte) int { return *(*int)(unsafe.Pointer(&bs)) } ```
  • 试试基于Token解析,应该不难
  • 1. 会造成泄漏。C返回的指针不会被Go引用计数,因此也不会被垃圾回收。解决方法可以在dll中实现释放的接口,在Go中调用。 2. 一楼解释得很明白了,这里略做补充:syscall.Proc.Call返回uintptr表示内存地址,直接操作这个地址即可,以下代码未经仔细推敲,仅供参考: ```go r, _, _ := some_func.Call() p := (*byte)(unsafe.Pointer(r)) data := make([]byte, 0) for *p != 0 { data = append(data, *p) r += unsafe.Sizeof(byte(0)) p = (*byte)(unsafe.Pointer(r)) } s := string(data) ```
  • 用来撤销。与ReadByte()互为反操作。
  • 可参考以下代码 ```go package main import ( "html/template" "os" ) func main() { users := []struct { Id int Name string GroupId int }{ {Id: 1, Name: "test", GroupId: 3}, {Id: 2, Name: "test2", GroupId: 2}, } groups := map[int]struct { Id int Name string }{ 3: {Id: 3, Name: "管理组"}, 2: {Id: 2, Name: "普通组"}, } tmplTxt := `{{range .}} <tr> <td>{{.Name}}</td> <td>{{.GroupId | getGroupName}}</td> </tr> {{end}}` t := template.Must(template.New("outHTML"). Funcs(template.FuncMap{"getGroupName": func(gpId int) string { return groups[gpId].Name }}).Parse(tmplTxt)) t.Execute(os.Stdout, users) } ```