摘要:
1、Go代码: package main /* #include <stdio.h> typedef void (*callback)(int); static void funcs(callback c1,callback c2,int p1,int p2) { c1(p1); c2(p2); } 阅读全文
摘要:
1、Python代码 from ctypes import * import time if __name__ == '__main__': startTime = time.time() s = CDLL("s1.so") # 加载s1.so文件 result = s.run(100000000) 阅读全文
摘要:
如果需要把Go编译为32位的DLL给其他的语言调用(易语言): 流程如下: 1、下载32位的GCC编译器 i686-w64-mingw32-gcc-4.7.4-release-win64_rubenvb.7z 2、设置环境变量 set CGO_ENABLED=1 set CC=mingw32\bin 阅读全文
摘要:
作者:panhuili,腾讯 IEG 后台开发工程师 一、CGO 快速入门 1.1、启用 CGO 特性 在 golang 代码中加入 import “C” 语句就可以启动 CGO 特性。这样在进行 go build 命令时,就会在编译和连接阶段启动 gcc 编译器。 // go.1.15// tes 阅读全文
摘要:
1、Go语言调用dll user32 := syscall.NewLazyDLL("imobiledevice.dll") MessageBoxW := user32.NewProc("idevice_event_subscribe") MessageBoxW.Call(uintptr(C.test 阅读全文
摘要:
package main /* #include <stdio.h> //void TestArray(char* s[],int sLen); static void DDD(char* s[],int sLen){ printf(s[sLen-1]); //TestArray(s,sLen); 阅读全文
摘要:
Cgo总结(一) 这篇文章的目的: 探究c的基本类型到go类型的转换怎样才能安全;下面是根据之间的转换做的测试 结论是: 坑真多,自己要小心点;运行速度还慢,能不用就尽量不用! 测试内容如下: 1、基本转换 C类型 调用方法 Go类型 字节数(byte) 数值范围 char C.char byte 阅读全文
摘要:
教程:http://www.topgoer.cn/docs/cgo/cgo-1d2r00032319l 1、概念解释 Cgo是Go语言提供的一个工具,它本身是一个可执行文件,当我们调用go build指令编译项目的时候,Cgo会在需要处理C代码的时候被自动使用 Cgo依赖Gcc工作 Cgo本身可以被 阅读全文
摘要:
Cgo编程中,在如下形式中,如果有Go函数需要导出(//export 函数名),则必须要添加在C函数前面添加static 1、传递字符串参数 package main /* typedef char* (*intFunc) (char *x); char* bridge_int_func(intFu 阅读全文
摘要:
GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言。但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Co 阅读全文
摘要:
实现 sort 包的Interface接口,就可以快速排序。 接口的妙用 package main import ( "fmt" "math/rand" "sort" ) type Hero struct { Name string Age int } type HeroSlice []Hero f 阅读全文
摘要:
一、接口型函数 1.原始接口实现 type Handler interface { Do(k, v interface{}) } func Each(m map[interface{}]interface{}, h Handler) { if m != nil && len(m) > 0 { for 阅读全文
摘要:
Golang 提供了 unsafe 包,让我们能够直接操作指定内存地址的内存。 通过 unsafe.Pointer() 函数,我们能够获取变量的内存地址表示,本质上这是个整数。可以将任意变量的地址转换成 Pointer 类型,也可以将 Pointer 类型转换成任意的指针类型,它是不同指针类型之间互 阅读全文
摘要:
1、远程连接 shell SSH(Secure Shell)协议在远程登录时比较常用,但是除此之外还有一些其它的功能也很好用,比如端口映射,X11转发,sftp文件传输等。 以下三篇文章将介绍golang版SSH的远程登录功能,端口映射功能及sftp文件传输功能。X11包含GUI的一些操作,没有找到 阅读全文
摘要:
01 试用 go embed 通过几个示例快速了解 go embed 的用法。 注意,代码中的 //go embed 是指令,而不是注释。 01 试用 go embed 例 1:内嵌文件 — Web 应用 基于 Echo 框架: package main import ( _ "embed" "ne 阅读全文
摘要:
被测试端 package main import ( "bufio" "fmt" "os" ) func main() { input := bufio.NewScanner(os.Stdin) fmt.Println("999") for input.Scan() { line := input. 阅读全文
摘要:
在用exec包调用的其他进程后如何关闭结束,可以使用context包的机制进行管理,context包的使用详见:https://godoc.org/context exec.CommandContext方发实现了context,通过context可以对exec启动的进程结束。 隐藏程序自身黑窗口的方 阅读全文
摘要:
func RunCMD() { cmd0 := exec.Command("tasklist") stdout0 , err := cmd0.StdoutPipe() // 获取命令输出内容 if err != nil { fmt.Println(err) return } if err := cm 阅读全文
摘要:
Go 文件 读写 总结: 写的话用 bufio.NewWriter() wirter.WriteString() 可扩展性更强 附 如果用户输绝对路径,就输入绝对路径,输入相对路径就拼成绝对路径 fullPath := path.Join(_filePath, _fileName) if !path 阅读全文
摘要:
一、判断文件或文件夹是否存在 golang 判断文件或者文件夹是否存在可以通过os.stat() 方法和os.IsExist() 方法来判断: func isExist(path string)(bool){ _, err := os.Stat(path) if err != nil{ if os. 阅读全文