go notepad++ 运行 命令
Notepad++有自己的环境变量 变量名称 含义 FULL_CURRENT_PATH 文件路径名称 CURRENT_DIRECTORY 文件目录 FILE_NAME 文件全名称 NAME_PART ...阅读全文
Notepad++有自己的环境变量 变量名称 含义 FULL_CURRENT_PATH 文件路径名称 CURRENT_DIRECTORY 文件目录 FILE_NAME 文件全名称 NAME_PART ...阅读全文
写法有点怪异,记一下吧 _, implemented := this.delegate.(IGenTcpServerDelegate) if implemented { this.delegate.GenTcpServerClientConnected(this.getClientInfoMap(conn)) } 也就是传说中的接口查询,话说go的一些东西真心让人真气逆行啊,哎,就不能设计的人性化点。。。阅读全文
Errors Library routines must often return some sort of error indication to the caller. As mentioned earlier, Go's multivalue return makes it easy to return a detailed error description alongside the normal return value. By convention, errors have ...阅读全文
先生成ssl证书 openssl genrsa -out key.pem 2048 openssl req -new -x509 -key key.pem -out cert.pem -days 1095 然后,大概这样 package main import ( "log" "net/http" ) func SayHello(w http.ResponseWriter, req *http.Request) { w.Write([]byte("Hell...阅读全文
package main import ( "fmt" "reflect" ) type YourT1 struct { } func (y *YourT1) MethodBar() { fmt.Println("MethodBar called") } type YourT2 struct { } func (y *YourT2) MethodFoo(i int, oo string) { fmt.Println("MethodFoo called",...阅读全文
Data Allocation with new Go has two allocation primitives, the built-in functions new and make. They do different things and apply to different types, which can be confusing, but the rules are simple. Let's talk about new first. It's a built-in...阅读全文
如果数据库连接只有一个,在某个时间点(指的是某个及其短的时间内),多个读写的话,会出问题,修改了下,加了个mutex,算是解决了此问题,贴下备忘 var mutex sync.Mutex func (c *Client) Do(args ...interface{}) ([]string, error) { var resp []string var err error mutex.Lock() err = c.send(args) resp, er...阅读全文
Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives)。对于初学者,这两者的区别也挺容易让人迷糊的。简单的说,new只分配内存,make用于slice,map,和channel的初始化。 1. new 这是一个用来分配内存的内建函数,但是与C++不一样的是,它并不初始化内存,只是将其置零。也就是说,new(T)会为T类型的新项目,分配被置零的存储,并且返回它的地址,一个类型为*T的值。在Go的术语中,其返回一个指向新分配的类型为T的指针,这...阅读全文
解析xml生成相应的java文件 package gsxdb import ( "io" "ron.zhang/util/file" "ron.zhang/util/str" "text/template" ) //xbean的模板 var xbeanTmplate = ` package xbean; import xdb.Bean; public class {{.Name }}Stub extends XbeanAdaptor<{{.Name}}> ...阅读全文
我比较喜欢先给出代码,然后得出结论 数组 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 arr := [...]int{1, 2, 3} 9 //打印初始的指针 10 fmt.Printf("the pointer is : %p \n", &arr) 11 printPointer(arr) 12 } 13 14 func printPointer(any...阅读全文
golang的map实现并不是像c++一样使用红黑树,而是使用了hashmap,用数组来实现。 详细的实现后续补充,这里先做个备忘。 在iterate整个map的时候,使用delete是安全的。这跟c++是不一样的,c++在delete的时候,会导致整棵树发生变化,所以不能在迭代的时候删除元素。 那为什么golang的map是安全的呢,从源码来看,golang的map使用了桶的概念,元素是被hash到桶存储,每个桶预设是存储八个kv,而且在头部有一个uint8 tophash[8]的结构,存储每...阅读全文
//////////////////////////////////////////////////////////////////////////////////////////////////// // filename : main.go // author : LiuDongguo // contact : jealdean@outlook.com // created : 21:39 16 Sep 2014 ///////////////////////////////////...阅读全文
Functions Multiple return values 返回多个值 One of Go's unusual features is that functions and methods can return multiple values. This form can be used to improve on a couple of clumsy idioms in C programs: in-band error returns (such as -1 for EOF...阅读全文
控制语句 条件语句 条件语句不需要使用括号将条件包含起来(); 无论语句体内有几条语句,花括号{}都是必须存在的; 左花括号{必须与if或者else处于同一行; 在if之后,条件语句之前,可以添加变量初始化语句,使用;间隔; 在有返回值的函数中,不允许将“最终的”return语句包含在if…else…结构中,否则会编译失败: func example(x int) int{ var result int if x == 0 { result = 5 ...阅读全文
Go语言通过testing包提供自动化测试功能。包内测试只要运行命令 go test,就能自动运行符合规则的测试函数。Go语言测试约定规则1.一般测试func TestXxx(*testing.T)测试行必须Test开头,Xxx为字符串,第一个X必须大写的[A-Z]的字幕为了测试方法和被测试方法的可读性,一般Xxx为被测试方法的函数名。 2.性能测试func BenchmarkXxx(*testing.B)性能测试用Benchmark标记,Xxx同上。 3.测试文件名约定go语言测试文件名约定规...阅读全文
goroutine之间的同步 goroutine是golang中在语言级别实现的轻量级线程,仅仅利用go就能立刻起一个新线程。多线程会引入线程之间的同步问题,经典的同步问题如生产者-消费者问题,在c,java级别需要使用锁、信号量进行共享资源的互斥使用和多线程之间的时序控制,而在golang中有channel作为同步的工具。 1. channel实现两个goroutine之间的通信 package main import "strconv" import "fmt" func main() ...阅读全文
1:beego 模板语法指南:http://blog.go-china.org/03-beego-template 2:go 语言sublimetext2配置:http://www.kankanews.com/ICkengine/archives/29343.shtml 3:go中国博客:http://blog.go-china.org/ 4:go验证码:http://www.cnblogs.com/ghj1976/p/3433161.html 5:go规范:http://ilovers.sin...阅读全文
类型方法 1. 给类型定义方法 在Go语言中,我们可以给任何类型(包括内置类型,但不包括指针和接口)定义方法。例如,在实际编程中,我们经常使用[ ]byte的切片,我们可以定义一个新的类型: type ByteSlice []byte 然后我们就可以定义方法了。例如,假如我们不想使用内建的append函数,我们可以实现一个自己的append方法: func Append(slice, data[]byte) []byte { l := len(slice) if l + ...阅读全文
实现逻辑 1、Golang 版本 1.3 2、实现原理: 1、主进程建立TCP监听服务,并且初始化一个变量 talkChan := make(map[int]chan string) 2、当主进程ACCEPT连接请求后,利用go 启动一个协程A去维持和客户端的连接,把taokChan带入到协程里 3、和客户端建立连接的协程A,发送消息给客户端,使其发送自己的用户信息。 4、协程A在收到客户端发送的用户信息后,建立一个此用户对应的管道 talkChan[uid] = make(c...阅读全文