golang对共享内存的操作

不同进程间的内存是互相独立的,没办法直接互相操作对方内的数据,而共享内存则是靠操作系统提供的内存映射机制,让不同进程的一块地址空间映射到同一个虚拟内存区域上,使不同的进程可以操作到一块共用的内存块。共享内存是效率最高的进程间通讯机制,因为数据不需要在内核和程序之间复制。 共享内存用到的是系统提供的mmap函数,它可以将一个文件映射到虚拟内存的一个区域中,程序使用指针引用这个区域,对这个内存区域的操作会被回写到文件上,其函数原型如下: void *mmap(void *addr, siz...阅读全文

开源中国博客 2013-11-26 19:01 壬癸甲乙

golang的defer精析

example1 func f() (result int) {      defer func() {          result++      }()      return 0 } example2 func f() (r int) {      t := 5      defer func() {          t = t + 5      }()      return t } example3 func f() (r int) {      defer func(r...阅读全文

开源中国博客 2014-08-13 09:48 chen yuwen

golang的json操作

package main import ( "encoding/json" "fmt" "os" ) type ConfigStruct struct { Host              string   `json:"host"` Port              int      `json:"port"` AnalyticsFile     string   `json:"analytics_file"` StaticFileVersion int      `js...阅读全文

开源中国博客 2014-03-20 15:00 liaojie

golang 坑集

func main() { x := 1 defer func(a int) { fmt.Println("a=", a) }(x) defer func() { fmt.Println("x=", x) }() x++ } 结果: x=2 a=1 说明: defer 调用所需参数在 defer 语句执行时就被已计算好了 (拷贝传递),闭包内则是引用,defer执行顺序FIFO 数组和slice 数组是值类型 slice是引用类型, 数组的创建  arr:=[...阅读全文

开源中国博客 2014-09-12 17:47 健哥大人

初识golang之函数

声明: func funcName(input1 type1, intput2 type2) (output1 type1, output2 type2) {     ………………     //可以有多个返回值     return val1, val2 } 说明:golang中通过func来声明一个函数,函数可以有一个或者多个参数,每个参数后面带类型,通过,分隔;函数可以返回多个值,返回的个数要于声明时定义的返回个数...阅读全文

开源中国博客 2013-08-28 23:17 vcity

golang时间处理

golang时间处理 相关包 "time" 当前时间戳 fmt.Println(time.Now().Unix()) # 1389058332 当前格式化时间 fmt.Println(time.Now().Format("2006-01-02 15:04:05")) # 这是个奇葩,必须是这个时间点, 据说是go诞生之日, 记忆方法:6-1-2-3-4-5 # 2014-01-07 09:42:20 时间戳转str格式化时间 s...阅读全文

开源中国博客 2014-07-09 13:47 千山万水

golang至少点

1: go 大写字母开头的变量是可以导出的,即其他包可以读取的,是公有变量;小写字母开头的是不可以导出的,是私有变量, 函数的大写字母开头也是如此 2: ]int和[5]int这两种表达方式在Go语言里有根本性的区别。[]int不是数组,而是数组切片(slice),而[5]int是一个数组。在Go语言中,数组是值类型,而数组切片是引用类型。 值类型变量在函数调用时的参数传递中会被完整拷贝一次变量内容,之后函数内操作的只是这个拷贝的副本。这是第32页例子中所表现出来的,函数内对数组的修改不会...阅读全文

开源中国博客 2014-02-17 18:48 昏鸦

关于golang的debug

Debuggers Application programming needs good debugging support, and in this area still a lot of work needs to be done. A debugger (Oogle): support for gdb (at least version 7 is needed), the GNU debugger is being built in Go’s gc linker (6l, 8l) by ...阅读全文

开源中国博客 2014-08-17 01:48 guozw

开启golang之旅

假如你对golang感兴趣, 却尚未开始入门, 这篇文章就是为你准备的.     为什么要学习golang? 游说开发者尝试golang的文章很多. 比如golang主要设计者的演讲, 某个德国人的吐槽, 国内golang布道者所著书籍的前言. 我不想重复一遍大牛们的观点, 只想说一说自己朴素的感受. 在学习golang之前, 我是java的爱好者, 犹如iteye的大多数用户一样. 是的, 我喜欢java, 开源, 跨平台, 强大的IDE支持, 最重要的是--工作...阅读全文

开源中国博客 2013-02-07 20:23 acmfly

ubuntu下安装golang

golang官方编译器安装与配置 因为golang是用部分功能语言编写的,所有首先应安装gcc, $ sudo apt-get install bison gawk gcc libc6-dev make 安装mercurial工具,用于提取golang的源代码 $ sudo apt-get install mercurial 提取golang的原代码 $hg clone -r release https://go.googlecode.com/hg/ go 编辑源代码 $ cd go/src ...阅读全文

开源中国博客 2013-11-21 14:48 陶诗德

golang学习的点点滴滴:数组切片使用

func main() { arr := [10]int {1,2,3,4,5,6,7,8,9,10} var slice1 []int = arr[:5] //取数组前5个 slice2 := arr[5:]//取数组后5个 slice3 := make([]int, 5)//make一个切片,初始化前5个为0                  mySlice2 := make([]int, 5, 10) // make一个切片,初始化前5个为0,初始容量为10 mySlice3 ...阅读全文

开源中国博客 2014-09-29 21:54 亓斌哥哥