Go
逗神大人
C++程序员,也会点Java,Kotlin, Swift,Python,Golang, C#, 但技术相对比较菜,用到啥就学啥,用不上的一会就忘了
展开
-
Go定时器使用
在软件开发场景,难免会用到定时器, 在go语言中,我们一般使用标准库time就可以实现很多定时器功能。原创 2022-11-29 19:42:42 · 2299 阅读 · 0 评论 -
CGO中处理C中的回调函数
CGO中处理C中的回调函数假设有一下 C语言的接口api.h#ifndef API_H#define API_H#ifdef __cplusplusextern "C" {#endiftypedef void (*IntCallback)(void *, int);void SetIntCallback(IntCallback cb, void *data);void DoIntCallback(int value);#ifdef __cplusplus}#endif#原创 2020-09-16 15:38:35 · 3555 阅读 · 3 评论 -
CGO 中对C语言的void *和void **的处理
CGO 中对C语言的void *和void **的处理1. void *与unsafe.PointerCGO中的 unsafe.Pointer与C语言中的 void *是对应的Go中的结构体如果要传入 C语言的某个函数作为参数, 可以使用 unsafe.Pointer来转化package main/*//假设这段定义在外部C源码中对cgo不可见//typedef struct User {// int id;// int age;// int number;//} User;原创 2020-09-16 11:43:20 · 2817 阅读 · 0 评论 -
CGO中的一些使用注意事项
1. import "C"必须是第一个import错误示范package main// #include <stdio.h>import "fmt"import "C"func main() { fmt.Println(C.puts(C.CString("这是一个golang字符串")))}应该改为package main// #include <stdio.h>import "C"import "fmt"func main() { f原创 2020-08-31 18:30:03 · 893 阅读 · 0 评论 -
Golang 中的常见字节操作
简介在Go语言中, 常用来处理字节操作的数据类型是字节数组[N]byte(或者切片[]byte)为了更方便的处理字节操作, 我们可以将[]byte重新定义一个类型, 比如 Bytestype Bytes []byte字节数组与字符串Bytes 转 stringb := Bytes{232, 191, 153, 230, 152, 175, 228, 184, 128, 228, 184, 170, 229, 173, 151, 231, 172, 166, 228, 184, 178}s :原创 2020-07-31 15:02:48 · 6807 阅读 · 0 评论 -
Go 实现任务队列
问题提出当某个对象的接口仅能在单线程(协程)调用时, 所有针对该对象的接口调用都应该处于同一个调度队列中。比如串口的读或者写, 如果多线程读(写)串口,难免出现数据完整性被破坏的问题。为了避免被破坏,就需要在调用接口时加锁保护。更简单一种方法就是将所有对该对象的接口调用都放在同一个调度队列中,这样每一次调用都会按先后顺序执行,不会有任何抢占资源的问题。实现原理在传统的编程语言中, 一般的思路是:一个存放任务的队列,一个用于任务队列的资源锁, 一个单独的内部线程内部线程不断的取出队列中的新任务执行原创 2020-07-23 10:31:50 · 2423 阅读 · 0 评论