golang
文章平均质量分 60
FatherOfCodingMan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
开源一个golang写的游戏服务器框架
当然一上来就是直接代码链接金華/paralleluniverse大概一年前写的,只实现了网络层和事件,本来想继续写完,但是太多想要做的事,一直没写完,新手可以参考下,基于protobuff。最近一直在搞前端的东西,突然有新的想法要做个C++ + lua的一个版本,虽然skynet不错,但是重新造轮子是不错的学习过程。还有之前在学习golang看过的一些资料.Golang context深入理解 | Scott’s learningGolang reflection反射 | Scott’s原创 2021-11-09 12:43:50 · 3178 阅读 · 3 评论 -
golang channel各种情况下的使用
https://go101.org/article/channel-use-cases.html像Futures/Promises一样使用channels将receive-only channels作为返回值package mainimport ( "time" "math/rand" "fmt")func longTimeRequest() <-chan int32 { r := make(chan int32) go func() { // Simulate原创 2020-05-22 17:35:25 · 521 阅读 · 0 评论 -
golang 并发 Concurrency
创建goroutinefunc gofun() { //helo goroutine}go gofun() //在普通函数执行前加关键字go并行库synchttps://golang.org/pkg/sync/不要复制sync中类型的值。Values containing the types defined in this package should not be copied.type Cond 条件变量,包含一个locker, 方法有:Broadcast, Sig..原创 2020-05-21 10:58:37 · 409 阅读 · 0 评论 -
golang 经验,package export, json
1、可见性。Packages里的首字母大写的变量表示是export的。struct中成员如果也要在package外用,那成员变量名首字母要大写。2、json Decode时的大小写。在使用encoding/json进行decode时,struct相关变量需要大写。例如我们有string{"jsonrpc":"1.0","id":"curltext","method":"getbloc...原创 2020-04-23 16:04:23 · 897 阅读 · 1 评论 -
go-lang快速入门 二
Go 没有类。不过你可以为结构体类型定义方法。方法就是一类带特殊的接收者参数的函数。func (v Vertex) Abs() float64 { 指针接收者,1.方法能够修改其接收者指向的值。2.这样可以避免在每次调用方法时复制该值。 接口类型 是由一组方法签名定义的集合。接口类型的变量可以保存任何实现了这些方法的值。空的接口 type AnyType interfa...原创 2019-10-02 13:00:56 · 213 阅读 · 0 评论 -
go-lang快速入门 一
本系列针对有编程基础的人,学过c,c++,c#或php之类。官网(英文的):https://golang.org/找到个中文的:http://docscn.studygolang.com/doc/。第一步可以通过https://tour.golang.org/welcome/1快速的了解golang的大致特点,这个网页可以一边看概要文档,一边练习。第二步可以看http://...原创 2019-09-26 01:08:51 · 352 阅读 · 0 评论 -
golang gc垃圾回收
大神的文章写得很好https://zhuanlan.zhihu.com/p/105571503golang虽然用了三色标记法,但是在阶段一:Mark Setup标记准备(STW:Stop the world)还是要停止所有的 goroutine。停止的方式是合作式抢占模式(当前 1.13 及之前版本),也就是在每个函数的序言中增加一个合作式抢占点。如果中间有个goroutine执行某个计算没有函数调用,其它goroutine只能处于等待中。在标记开始的时候,收集器会默认抢占 25% 的 CPU.原创 2020-12-17 23:44:25 · 248 阅读 · 1 评论 -
golang-reflect-method-callback
参考:https://stackoverflow.com/questions/38897529/pass-method-argument-to-function通过反射调用method方法。package mainimport ( "fmt" "reflect")type Foo intfunc (f Foo) A(b int) { fmt.Println("testA", b)}func (f Foo) B(b int) { fmt.P原创 2020-12-08 11:42:54 · 357 阅读 · 0 评论 -
golang内存管理和分配
Go: Memory Management and Allocation引子goroutine堆栈上的内存块不用gc。package-level变量在堆上分配且运行期间永远不会gc。示例1:package maintype smallStruct struct { a, b int64 c, d float64}func main() { smallAllocation()}//go:noinlinefunc smallAllocation() *s翻译 2024-06-21 11:56:25 · 235 阅读 · 1 评论 -
golang的内存相关内容
前言golang是自动内存管理和自动gc的,了解golang的内存细节不是必须的。但是如果明白golang内存方面的概念和编译时、运行时的内存管理细节对写出更高质量的代码是很有帮助的。本文会介绍内存块申请(memory block allocation)的实现和原理,编译时和运行时的垃圾回收方面的内容。内存块/存储块(memory blocks)内存块是连续的内存段,用于在运行时托管值部分(value parts )。不同的内存块可能有不同的大小,以便寄存不同的value parts。一个内翻译 2020-12-03 14:49:08 · 467 阅读 · 0 评论 -
golang value part
https://go101.org/article/value-part.html部分内容摘要go中两大类型分类go可以被视为C家庭语言,go和c语言在struct和指针类型的内存结构上有很多的相似之处。另一方面,go也被视为c语言框架的。主要反映在,go支持的类型中有几种是内存结构不透明的,而c语言的内存结构是透明的。每个c值在内存中被封装到一个内存块中。而go有几种类型会存在多个内存块中。go类型分为两大类:只存放在一个内存块中的类型 存放在多个内存块中的类型 solo翻译 2020-12-03 13:43:58 · 206 阅读 · 0 评论 -
golang context深入理解
package Context里的说明golang有个context的包,它定义了一个Context 类型,该类型在API边界之间以及进程之间传递截止日期,取消信号和其他请求范围的值。传入服务器的请求应创建一个Context,传出调用到服务器的就接受一个Context(Incoming requests to a server should create a Context, and outgoing calls to servers should accept a Context.)。在函数调用链翻译 2020-12-01 17:42:21 · 336 阅读 · 0 评论 -
golang 反射的例子
看https://go101.org/article/reflection.htmlexample 1:(channel map array)package mainimport "fmt"import "reflect" // use this packagefunc main() { type A = [16]int16 var c <-chan map[A][]byte tc := reflect.TypeOf(c) fmt.Println原创 2020-11-11 00:41:42 · 310 阅读 · 0 评论 -
golang testing
概述func TestXxx(*testing.T)测试函数的名字,Test要以大写开始。测试的文件名是 xxx_test.go, "_test.go"结尾,文件内是TestXxx的函数。文件放在被测试模块同一目录。具体错误可以用testing.T的Errorf来输出。Benchmarksfunc BenchmarkXxx(*testing.B)go test -bench 将会依序运行benchmarks的用例。example:func BenchmarkRandIn原创 2020-11-10 13:03:44 · 283 阅读 · 0 评论 -
Go101 深入理解channel
参考https://go101.org/article/channel.htmlChanncel的介绍Rob Pike有个关于并发编程伟大的建议:不要通过共享内存来通信,而是通过通信来共享内存,也就是channels,对共享资源也一样。当goroutines需要实现共享内存来通信,我们要用到传统的并发同步技术,例如:mutex locks,来保护共享内存,避免数据竞争。用channels 则可以实现通过通信共享内存。channel可以被看成是一个程序内的FIFO(先进先出)队列。一些go翻译 2020-11-03 19:02:22 · 1153 阅读 · 0 评论
分享