Go语言中文网 为您找到相关结果 25

Go学习笔记之基础数据类型

1 整数 在 Go 语言中,如果不加特殊前缀,都是10进制表示,例如:“100” 整数可以直接用指数形式,例如:“1E9”,意思是 1 * (10^9),1 乘以 10 的 9 次方 整数的加减法用 + 和 - 号,乘法用 * 号,除法用 / 号, 得到的商是整数,例如 5 / 2 = 2,而 % 号是求余(取模), 例如 5 % 2 = 1 在 Go语言中,整数类型分为带符号整型和不带符号整型,接着又分别按照长度各自划分为4个类型。 带符号整型 int8 int16 int32 int64 不带符号整型 uint8 uint16 uint32 uint 64 除此之外还有默认类型 int 和 uint,目前都是32位,未来可能会变成64位 还有2个特殊的整型别名 ,和字符串很相关,分别是:...阅读全文

GDB调试Go程序进阶

目的:使用gdb附加到一个正在运行的进程上,然后做一些调试,并安全退出。 1. 修改Ubuntu配置,允许gdb附加到进程上,如何修改如下: http://askubuntu.com/questions/41629/after-upgrade-gdb-wont-attach-to-process 2. 查看进程id #ps ax 或者 #ps au 3. 启动gdb 4. 使用file命令来指定进程所联系的程序源代码和符号表,例如: file /home/yourihua/workplace/rhino/bin/console 5. attach <进程ID> 6. 打断点,如下: b /home/yourihua/workplace/rhino/src/github.com/yourihu...阅读全文

博文 2014-10-09 16:55:02 Rhino(犀牛)

ST的自动完成功能怎么让它不自动加上“CR”符号

![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqkAAAGFCAIAAABRwv1AAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOydeUBVZf7/P88BNS1XVtNJQFEBQ0kNpxlXLNwSW5iwmtKyYqxJzGkzs82casbEmm+hbdq3Rvo6FTAWOomKtmjpD2ViERVwR5BELHO75/n9cfZ7z7ncCxcucN+vbnjPc57lc57nOc/72c65bGfFL0REjBEREVO+MiYI8hemukt+ZLjjd27vyHSn9acMh3YnSDbE3pmbfjXB5CyXonTZv/tw...阅读全文

Golang学习笔记一:语言规范

引言 Golang参考手册,更多内容请参考http://golang.org 语言规范参考自https://golang.org/ref/spec 词汇元素 注释 行注释: // comment content 段注释:/* comment content */ 符号 符号有4类:标识符、关键字、操作符和分隔符、字面常量 分号 golang中,分号可省略 标识符 标识符即程序中的变量和类型,有一个或多个字母或数字组成,第一个字母必须字母开头。 identifier = letter { letter | unicode_digit } 关键字 标识符不能是golang中的保留关键字 break default func interface select case defer go map s...阅读全文

博文 2015-10-10 23:00:00 scherrer

编译更小的 Golang 程序

go build -ldflags "-s -w" x.go (go install类似) -s 去掉符号表,然后 panic 的时候 stack trace 就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果。不推荐使用。 -w 去掉 DWARF 调试信息,得到的程序就不能用 gdb 调试了,如果不打算用 gdb 调试,基本没啥损失。 示例: # go build main.go && ls -l main -rwxr-xr-x 1 Bing.L Bing.L 15054336 Nov 4 08:39 main # go build -ldflags "-s -w" main.go && ls -l main -rwxr-xr-x 1 Bing.L Bing.L ...阅读全文

博文 2014-11-05 03:00:01 bing-l

Go语言链接器大修

之前有帖子说到 [《Google抛弃C语言,采用Go语言重写Go编译器》](http://studygolang.com/topics/471),这里说到的是链接器。同样,有部分功能会使用 Go 语言编写。 ### 摘要 ### 在构建和运行一个标准的 Go 程序时,链接器是最慢的一部分。为了解决这个问题,我们计划将链接器拆分到两部分。其中的一部分可能会用 Go 来编写。 ### 背景 ### 链接器总是 Plan 9 工具链中最慢的部分之一,而现在它是 Go 工具链中最慢的部分了。Ken Thompson 在关于工具链的概述中进行了总结: 新的编译器编译迅速、加载缓慢,生成中等质量的目标代码。编译器与移植性相关,对于不同的计算机需要若干星期的工作来构建对应的...阅读全文

Go_Json_HTMLEscape_Compact

package main import ( "bytes" "encoding/json" "fmt" "io" "strings" ) //HTMLEscape 函数将添加Buffer中的特殊字符串进行转义(Buffer中本来就有的字节不会转义只会转义后来添加的) //Compact 对这些特殊字符不进行转义 但是有一个作用就是在拼接字符串时 如果后面的字符串有问题那么不添加到Buffer中相当于自动帮我们检查了 //Compact 是个很有用的函数试想一下如果不用Compact直接拼接字符串那么如果其中第n个json串格式有问题就会导致后面所有的json串无法解析 //而使用了Compact来解析 假如拼接到第n个json串有问题会直接抛弃这个json串而不会去影响到后面json串的解析...阅读全文

博文 2015-10-25 17:00:05 u012807459

golang如何让编译生产的二进制文件变小

把Go程序变小的办法是: go build -ldflags "-s -w" (go install类似) -s去掉符号表(然后panic时候的stack trace就没有任何文件名/行号信息了, 这个等价于普通C/C++程序被strip的效果), -w去掉DWARF调试信息,得到的程序就不能用gdb调试了。 比如,server.go是一个简单的http server,用了net/http包。 $ go build server.go $ ls -l server -rwxr-xr-x 1 minux staff 4507004 2012-10-25 14:16 server $ go build -ldflags "-s -w" server.go $ ls -l server -rwxr...阅读全文

博文 2014-10-04 19:27:40 壬癸甲乙

Golang 自然语言处理 go-freeling

go-freeling 是Golang 自然语言处理器。 特性: * 文字符号化 * 拆分句子 * 形态分析 * 后缀处理,附着词素代词的标记化 * 灵活的多 字识别 * 收缩裂缝 * 未登录词类别的概率预测 * 命名实体 检测 * 词性标注 * 基于图表的 浅层分析 * 命名实体分类(使用外部库MITIE -  [https://github.com/mit-nlp/MITIE](https://github.com/mit-nlp/MITIE) ) * 基于规则的依存分...阅读全文

go语言学习

1.go语言的安装 博主的环境是ubuntu14.04,所以安装配置go语言的环境直接就使用 sudo apt-get install golang 安装完毕后 2.hello world 代码如下 /* hello.go */ package main import "fmt" func main(){ fmt.Println("Hello,World!") } 注意Println方法P为大写 然后在终端编译运行 go run hello.go 或者使用build命令生成可执行文件 go build 3.go的一些语法知识 go每一个单独语句不需要特殊的分隔线,默认以行分隔符作为语句分隔符 关键字var标记变量,const标记常量 变量的声明 package main import "fm...阅读全文

博文 2015-10-05 23:00:01 kakakakaka

Go学习笔记之基础数据类型

http://studygolang.com/articles/1348 1 整数 在 Go 语言中,如果不加特殊前缀,都是10进制表示,例如:“100” 整数可以直接用指数形式,例如:“1E9”,意思是 1 * (10^9),1 乘以 10 的 9 次方 整数的加减法用 + 和 - 号,乘法用 * 号,除法用 / 号, 得到的商是整数,例如 5 / 2 = 2,而 % 号是求余(取模), 例如 5 % 2 = 1 在 Go语言中,整数类型分为带符号整型和不带符号整型,接着又分别按照长度各自划分为4个类型。 带符号整型 int8 int16 int32 int64 不带符号整型 uint8 uint16 uint32 uint 64 除此之外还有默认类型 int 和 uint,目前都是32位...阅读全文

博文 2016-06-16 13:00:16 kungfupanda

把Go程序变小的办法

把Go程序变小的办法是: go build -ldflags “-s -w” (go install类似) -s去掉符号表(然后panic时候的stack trace就没有任何文件名/行号信息了, 这个等价于普通C/C++程序被strip的效果), -w去掉DWARF调试信息,得到的程序就不能用gdb调试了。 比如,server.go是一个简单的http server,用了net/http包。 $ go build server.go $ ls -l server -rwxr-xr-x 1 minux staff 4507004 2012-10-25 14:16 server $ go build -ldflags “-s -w” server.go $ ls -l server -rwxr...阅读全文

博文 2015-10-26 12:00:02 mickelfeng

[翻译] Go 1.3 链接器大修

Go team 总是能带来一些惊喜的,关于 Go 的链接器,看来在 1.3 版本中要大修了。 ————翻译分隔线———— Go 1.3 链接器大修 Russ Cox 2013 年 11 月 摘要 在构建和运行一个标准的 Go 程序时,链接器是最慢的一部分。为了解决这个问题,我们计划将链接器拆分到两部分。其中的一部分可能会用 Go 来编写。 背景 链接器总是 Plan 9 工具链中最慢的部分之一,而现在它是 Go 工具链中最慢的部分了。Ken Thompson 在关于工具链的概述中进行了总结: 新的编译器编译迅速、加载缓慢,生成中等质量的目标代码。编译器与移植性相关,对于不同的计算机需要若干星期的工作来构建对应的编译器。对于 Plan 9 来说,需要若干有特定功能、且使用自己的目标格式的编译器...阅读全文

博文 2014-10-09 16:19:59 mikespook

把Go程序变小的办法

把Go程序变小的办法是: go build -ldflags “-s -w” (go install类似) -s去掉符号表(然后panic时候的stack trace就没有任何文件名/行号信息了, 这个等价于普通C/C++程序被strip的效果), -w去掉DWARF调试信息,得到的程序就不能用gdb调试了。 比如,server.go是一个简单的http server,用了net/http包。 $ go build server.go $ ls -l server -rwxr-xr-x 1 minux staff 4507004 2012-10-25 14:16 server $ go build -ldflags “-s -w” server.go $ ls -l server -rwxr...阅读全文

博文 2016-09-15 22:00:02 太阳黑子

如何压缩Golang 编译出的可执行文件大小

如何压缩Golang 编译出的可执行文件大小 2015-05-05 先给结论:可以减少到原来的29% 最近在写一个TLScat小工具 Github.com/mengzhuo/tlscat 源文件仅仅2KB不到,但是用 go build tlscat.go 编译出来的有4.6MB! 后来发现这个Golang的1.5才会解决的问题 Issue #6853 all: binaries too big and growing 可是,我就不信这个邪,于是搜索到了go build的一些用法 go build -ldflags "-s -w" ‘-s’ 相当于strip掉符号表, 但是以后就没办法在gdb里查看行号和文件了。 ‘-w’ flag to the linker to omit the debu...阅读全文

golang 调用 cgo coredump 获得方法

写一个错误的c程序 package dlsym import "testing" func Test_intercept(t *testing.T) { Intercept("gethostbyname\x00") } package dlsym // #cgo CFLAGS: -I. // #include // #include "dlsym_wrapper.h" import "C" import "unsafe" func Intercept(symbol string) { ptr := unsafe.Pointer(&([]byte(symbol)[0])) C.intercept((*C.char)(ptr), C.size_t(len(symbol)))...阅读全文

博文 2017-02-10 10:29:10 taowen

编译更小的Golang程序

把Go程序变小的办法是:go build -ldflags "-s -w"相关解释:-s去掉符号表,panic时候的stack trace就没有任何文件名/行号信息了,这个等价于普通C/C++程序被strip的效果,-w去掉DWARF调试信息,得到的程序就不能用gdb调试了。 -s和-w也可以分开使用.原文:http://sudochina.com/insion/blog/179...阅读全文

博文 2017-02-09 17:22:57 鲜橙加冰

text/template传入的data为map[string]interface{},而Key中包含特殊字符如何编写模板?

text/template传入的data为map[string]interface{},而Key中包含特殊字符如何编写模板? 如: ``` data={"/abc/d+c": 123, ".2344": "image01.jpg"} ``` ``` template....begin {{"/abc/d+c"}} template....end ``` 希望获得 ``` template....begin 123 template....end ``` ...阅读全文

Emoji与Unicode

Unicode的资源是非常宝贵的,而emoji的表情真的是越来越多,那么emoji是如何编码的呢?在普通的聊天软件中,譬如QQ,一些基本表情是采用普通字符的转义表示。譬如在字符串中检测到[微笑],就自动替换为表情。但是Emoji是一种特殊的字符,它是真正被编码入Unicode的字符。它在字符集里占据了U+1F300到U+1F9EF中的部分范围。 但是为了实现丰富的Emoji,这种表情不一定只占据一个字符,尤其是为了实现emoji中立的时候,就需要1-2个字符来完成一个表情,最多需要7个字符。 现在用一段代码来举例 : 123456789101112131415package mainimport "fmt"import "unicode/utf8"func main() { strs := ...阅读全文

博文 2017-09-28 11:31:13 zablog.me

Go Plugin的一个bug

Go 1.8中增加了 plugin package,但是仅支持Linux操作系统,并且还有一些已知的bug。可以说,这个插件系统的实现还未达到"产品级"的水平。 The plugin support is currently incomplete, only supports Linux, and has known bugs. 一些已知的bug已经推到 Go1.10甚至以后的版本中修复了。 今天在测试Go 1.9中的功能的时候就遇到了plugin的一个bug。 按照官方的文档, 开发一个插件很简单: plugin1/main.go1234567package mainimport "fmt"var V intfunc F() { fmt.Printf("Hello, number %d\n...阅读全文

博文 2017-08-28 01:48:36 smallnest