
GO
GO日常开发记录
自由软件开发者
C++资深开发者,订阅用户:如果评论留言不能及时回复,请Q我:296863766 注明为优快云
展开
-
go开源webssh终端源码main.go分析
用户名与密码参数分割 (-a user:pass'的格式传参)在可执行文件中嵌入文件夹dist。设置http服务参数并启用路由。访问集成文件夹文件系统。http操作静态资源。原创 2024-07-04 11:32:50 · 374 阅读 · 0 评论 -
go-admin-ui开源后台管理系统华为云部署
添加后端API接口地址如: http://xxx.xxx.xxx.xxx:8000。使用curl 127.0.0.1:9527成功访问网站。发布前记得修修改.env.productionk中的。添加网站配置文件go_admin_ui.conf。location 下的root指向网站文件夹。8.测试nginx配置与重启nginx服务器。添加与修改配置www-data 改为 www。1.华为云开通8000与9527端口。修改网站文件夹为www用户组。3.发布到远程服务器。6.查看服务启动状态。原创 2024-06-21 22:56:59 · 419 阅读 · 0 评论 -
基于Go开发的开源远程桌面分享工具ScreeGo编译使用
如果未安装yarn请先安装:npm install -g yarn (要求Node版本18到20之间)6. 登陆后台:http://127.0.0.1:5050 用户与密码都是 admin。如果报错,先cd/ui 然后执行 yarn build 生成build目录再运行。3.进入Server目录运行go mod downalod 下载依赖。登陆成功后,设置房间名并创建房间,然后启动共享。2. 使用GoLand打开工程。8. 登陆客户端,进入共享房间。5. 编译并运行服务端。7.编译客户端并启动。原创 2024-06-19 17:04:40 · 779 阅读 · 0 评论 -
golang使用WaitGroup等待多个协程执行完成
4.等待所有协程执行完成。原创 2024-06-07 15:59:46 · 544 阅读 · 0 评论 -
golang协程工作池处理多任务示例
2.创建任务通道与任务执行结果通道。4.向工作通道发送任务。原创 2024-06-07 14:56:37 · 431 阅读 · 0 评论 -
golang定时器使用示例
2.定时器配合协程使用。1.定时器创建与停止。原创 2024-06-07 11:29:42 · 509 阅读 · 0 评论 -
golang通道(chan)选择(select)与关闭(close)使用示例
通道超时处理:使用time.After为写入条件。遍历所有通道读取数据。原创 2024-06-06 14:46:10 · 836 阅读 · 0 评论 -
golang协程(go)与信道(chan)使用示例
局部函数go协程使用。原创 2024-06-06 11:26:35 · 401 阅读 · 0 评论 -
golang标准库错误处理及自定义错误处理示例
5.在函数中抛出自定义错误结构。4.为自定义错误结构实现方法。2. 在函数中返回错误。原创 2024-06-06 09:57:18 · 447 阅读 · 0 评论 -
golang泛型函数与泛型队列使用示例
定义一个泛型生成器,功能:取传入的map对象的键的集合并返回。测试生成器,直接初始化map并传入。泛型队列测试之自定义结构使用。在泛型队列中使用结构。原创 2024-06-05 15:38:52 · 430 阅读 · 0 评论 -
golang内嵌结构使用示例(结构中包含结构)
2.实现结构成员num字段的get与set方法。4.base结构实现方法descirbe。5.使用结构base与container。6.通过接口调用结构实现方法。3.在新结构中嵌入结构。原创 2024-06-05 14:19:24 · 355 阅读 · 0 评论 -
golang结构与接口方法实现与交互使用示例
5.使用接口与结构方法。4.结构实现接口方法。原创 2024-06-05 11:32:50 · 388 阅读 · 0 评论 -
golang结构与结构方法实现示例
5.普通函数操作结构。原创 2024-06-05 10:39:01 · 938 阅读 · 0 评论 -
golang之Slices操作示例(字符串数组)
2.使用make分配内存。5.取指定位置与长度元素。1. 声明与长度判断。原创 2024-06-04 16:44:01 · 285 阅读 · 0 评论 -
golang二维数组使用示例
1.普通数组创建与使用。原创 2024-06-04 15:57:52 · 295 阅读 · 0 评论 -
golang变量与条件语句使用示例
5.switch条件语句使用。3.循环条件语句使用。4.if条件语句使用。原创 2024-06-04 15:09:24 · 327 阅读 · 1 评论 -
golang普通函数与闭包函数使用示例
2.函数返回多个值实现。3.函数可变参数实现。原创 2024-06-04 11:46:03 · 287 阅读 · 0 评论 -
golang之map与数组使用示例
4.对map进行删除,清空,长度计算操作。1. 使用make分配map内存。7.map与数组交互使用。6.数组初始化与遍历。原创 2024-06-04 11:21:13 · 397 阅读 · 0 评论 -
golang接口/枚举/结构使用示例
在go代码窗口右击弹出菜单,选择Generate ,在弹出的Generate菜单中选择 Implement Methods。先选择结构,后选择接口,然后生成。5.在主函数中调用并输出。4.定义接口调用函数。原创 2024-06-04 10:27:57 · 419 阅读 · 0 评论 -
Go跨平台编译
1.编译windows平台运行程序。2.编译linux平台运行程序。3.编译macos平台运行程序。原创 2024-06-01 09:16:18 · 562 阅读 · 0 评论 -
Go-Admin后台管理系统源码(GO+VUE)编译与部署
下载并安装nodejs 17。5. 编译完成后,启动服务。3.编译管理后台后端。修改依赖库版本并安装。原创 2024-05-31 11:36:33 · 667 阅读 · 0 评论 -
GO语言调用本地自定义模块
退到greetings文件夹的上一级目录,然后创建hello文件夹并进入该文件夹。确保已安装VSCODE前提下,运行下面命令创建greetings.go文件。最重要一步,因为包没有发布到网络,需要替换为本地可使用的包,执行下面命令。创建hello.go并在其中使用greetings.go模块中定义的函数。创建文件夹greetings并进入该文件夹。在终端执行下面命令将创建go模块文件。创建hello.go并输入上面代码。原创 2024-04-14 10:06:48 · 693 阅读 · 0 评论 -
go訂時器使用
定義定時器func callByTimeID(timerId string, tick time.Duration,callback func()) { ticker := time.NewTicker(time.Second) defer ticker.Stop() done := make(chan bool) go func() { time.Sleep(tick) done <- true }() for { select { case <-don.原创 2021-09-09 15:37:19 · 319 阅读 · 0 评论 -
go开发相关环境安装(redis,nats-server,consul,elasticsearch)
brew install protoc-gen-gogofaster 安装protoc-gen-gogofasterbrew install consul 安装consulbrew install redis 安装redisbrew install nats-server 实装nats-serverbrew services start nats-server启动nats-serverbrew services start consul启动consul服务bre...原创 2021-09-01 00:52:09 · 651 阅读 · 0 评论 -
go取扑克牌值与花色与生成随机数与取不重复的牌
//取扑克花色func GetPokerColor(cardData byte) uint8 { return cardData / 16}//取扑克牌值func GetPokerValue(cardData byte) uint8 { return cardData & 255 % 16}//取扑克牌值,花色func GetPokerValueAndColor(cardData byte) (uint8, uint8) { return cardData & 2..原创 2021-08-31 12:09:33 · 656 阅读 · 0 评论 -
go通过调用接口方法映射到实例方法
package common//基类接口type IBase interface { Init() //构造 Destroy() //消毁}package commonimport ( "fmt")//游戏公共业务type GameCommon struct { //初始化游戏公共业务信息}func New() IBase { return &GameCommon{} //返回实现化接口的对象}//构造func (common *GameC.原创 2021-08-30 18:18:43 · 574 阅读 · 0 评论 -
调用protobuf的pb文件中的复合对象
//构造二进制数据 gameKindResponse := &platform.GameKindResponse{ GameKind: []platform.GameKind{platform.GameKind_GAME_KIND_TEEPATTI}, //游戏类型 //游戏房间明细 TeepattiLevels: []*platform.TeepattiLevelDesc{ //结构数组 { GameLevel: &platform.GameLevelDesc.原创 2021-08-30 17:43:22 · 537 阅读 · 0 评论 -
WebSocket接收与发送Protobuf消息及消息的打包与解包
server:package mainimport ( //"strings" //"reflect" "bytes" "fmt" "encoding/binary" "net/http" "github.com/gorilla/websocket" "time" "gowebsocket/impl" "github.com/golang/protobuf/proto" )var( upgrader = websocket.Upgrader{ /.原创 2021-08-27 17:58:10 · 3724 阅读 · 0 评论 -
go解密测试
//加密过程--> //573232 & 255 = 48 //&运算 --->48//573232 >> 8 = 2239 //>>8运算//2239 & 255 = 191 //&运算 --->191//2239 >> 8 = 8 //>>8运算//8 & 255 = 8 //&运算 --->..原创 2021-08-26 15:49:54 · 388 阅读 · 0 评论 -
go加密二进制数据流并打包发通过websocket送给客户端
1.加密//加密func byteEncrypt(num int64,len int) []byte { x :=num byteData := make([]byte,len) for i := 0; i < len; i++ { byteData[i] = byte(x & 255) //进行与运算 x = x >> 8 //右移8位 } return byteData }2.打包数据//打包给客原创 2021-08-25 18:12:04 · 1538 阅读 · 0 评论 -
go protobuf 编码与解码使用
引入模块 "google.golang.org/protobuf/proto"导入 xxx.pb.go文件实例化proto数据结构//实例化proto数据结构 rpc := &RPCInfo{ Cid: *proto.String("123457"), Fn: *proto.String("hello"), ReplyTo: *proto.String("232244"), Track: *proto.String("track")...原创 2021-08-24 14:42:57 · 757 阅读 · 0 评论 -
mqant服务框架rpc调用protobuf流程
注册http服务并监听8080端口添加http访问路由,在浏览器中输入 http://localhost:8080/test/proto可访问RPC服务RpcTest模块下所注册的/test/proto路由,并传入一个protobuf结构ResultInfo调用路由时传入的模块名与模块注册的路由名要一致通过路径/test/proto映射到方法testProto直接根据传入的Protobuf结构实例化对象并返回成功执行了RPC调用并返回数据修改传入的字段值并...原创 2021-08-23 11:35:41 · 291 阅读 · 0 评论 -
go根据proto文件生成模块就调用模块中的结构体
创建一个文件夹goprotodemo并用VSCODE打开,然后终端输入 go mod init goprotodemo回车后会自动生成go.mod文件go模块声明文件内容如下,包含模块名与go版本号用VSCODE新建一个demo.proto文件,内容如下:syntax="proto3"; //版本号option go_package ="."; //生成位置package main; //包名enum ClassName{ //枚举 class1=0; //标号...原创 2021-08-21 21:10:58 · 596 阅读 · 0 评论 -
proto文件生成go文件
安装protoc输入yprotoc安装OK查看版本查看go环境变量下载protoc-gen-gogo get google.golang.org/protobuf查看protoc-gen-go安装位置生成go生成前记得添加 option go_package = "./com/hipoker/proto/web";...原创 2021-08-20 18:53:19 · 860 阅读 · 0 评论 -
golang递归算法实现
递归实现//递归算法,计算前面两个数的和func fibonacci(front int) (back int) { if front <= 2 { back = 1 } else { back = fibonacci(front-1) + fibonacci(front-2) //计算前面两个数的和并返回给back } return}递归调用for i := 1; i <= 10; i++ { result := fibonacci(i) fmt.Pr.原创 2021-08-20 17:58:07 · 339 阅读 · 0 评论 -
golang协程生产消息与消费消息
协程生产消息//协程生产消息//prefix : 产生的字符串前缀//ch : 通道func producer_msg(prefix string, ch chan<- string) { //支持字符串格式通信的通道chan chan<-向通道写数据 //循环产生消息 for { ch <- fmt.Sprintf("协程生产消息: %s %v", prefix, ch) //将产生的消息写入通道 time.Sleep(time.Second) .原创 2021-08-20 17:06:55 · 400 阅读 · 0 评论 -
golang反射的类型Type与种类Kind使用
引入反射模块//导入模块import ( "fmt" "reflect")在函数中使用反射func CallAll(v []interface{}) { for _, r := range v { fmt.Println(reflect.TypeOf(r)) fmt.Println(reflect.TypeOf(r).Kind()) }}在遍历中使用反射//转换Dog和Cat结构为interface{} anis := make([]interface...原创 2021-08-20 12:33:01 · 1128 阅读 · 0 评论 -
golang中的struct转换为interface{}
初始化集合animals := []Animal{Dog{}, Cat{}} //初始化集合根据集合大小生成interface{}数组anis := make([]interface{}, len(animals))遍历集合并给interface{}赋值for k, v := range animals { anis[k] = "convert to interface{} : " + v.Speak() }完整代码:package main //包名//导...原创 2021-08-20 12:06:50 · 3288 阅读 · 0 评论 -
在golang中使用[]interface{}
定义一个函数,传入参数是interface{}的集合//定义一个方法,传入参数是interface{}的集合func PrintAll(v []interface{}) { //遍历对象 for _, r := range v { fmt.Println(r) //输出值 }}调用自定义函数//入口func main() { //根据字符串数据生成[]interface{} names := []string{"stanley", "david", "oscar"}..原创 2021-08-20 11:50:11 · 1892 阅读 · 0 评论 -
go接口定义与结构实现接口方法
新建一个go文件定义包名package main //包名声明导入模块//导入模块import ( "fmt")接口定义//接口定义type Animal interface { Speak() string //定义一个方法Speak返回类型是字符串}定义结构//定义Dog结构type Dog struct {}//定义Cat结构type Cat struct {}在结构中实现接口方法//在结构Dog中实现接口方法func (d原创 2021-08-20 11:31:57 · 351 阅读 · 0 评论