服务咨询热线:

022-88711099

当前位置:

14.1 switch 语句switch var1 { case val1: ... case val2: ... default: ... }switch { case condition1: ... case condition2: ... d……

13.1 字典(Map)map是一种元素对的无序集合,一组称为元素value,另一组为唯一键索引key。 未初始化map的值为nil。map 是引用类型,可以使用如下声明:var map1 map[keytype]valuetype([keytype] 和 valuetype 之间允许有空格,但是 Gofmt 移除了空格)在声明的时候不需要知道 map 的长度,map 是可以动态增长的。key 可……

12.1 切片(slice)切片(slice) 是对底层数组一个连续片段的引用,所以切片是一个引用类型。切片提供对该数组中编号的元素序列的访问。未初始化切片的值为nil。与数组一样,切片是可索引的并且具有长度。切片s的长度可以通过内置函数len() 获取;与数组不同,切片的长度可能在执行期间发生变化。元素可以通过整数索引0到len(s)-1来寻址。我们可以把切片看成是一个长度可变的数组。……

11.1 数组(Array)数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。数组长度必须是一个常量表达式,并且必须是一个非负整数。数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的。注意事项:如果我们想让数组元素类型为任意类型的话可以使用空接口interface{}作为类型。……

10.1 字符串介绍Go 语言中可以使用反引号或者双引号来定义字符串。反引号表示原生的字符串,即不进行转义。双引号:字符串使用双引号括起来,其中的相关的转义字符将被替换。例如:str := "Hello World! \n Hello Gopher! \n" 输出: Hello World! Hello Gopher!反引号:字符串使用反引号括起来,其中的相关的转义字符不会被替换。例如……

9.1 内置运算符算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符Go语言的算术运算符:运算符含义示意+相加A + B-相减A - B*相乘A * B/相除B / A 结果还是整数 8/3=2%求余B % A++自增A++ 1--自减A--Go语言的关系运算符:运算符含义示意==检查两个值是否相等。(A == B) 为 False!=检查两个值是否不相等。(A != B) 为 True&……

8.1 项目结构Go的工程项目管理非常简单,使用目录结构和包名来确定工程结构和构建顺序。环境变量GOPATH在项目管理中非常重要,想要构建一个项目,必须确保项目目录在GOPATH中。而GOPATH可以有多个项目用";"分隔。Go 项目目录下一般有三个子目录:src存放源代码pkg编译后生成的文件bin编译后生成的可执行文件我们重点要关注的其实就是src文件夹中的目录结构。为了进行一个项目,我们会在……

7.1 包的概念Go语言使用包(package)的概念来组织管理代码,包是结构化代码的一种方式。和其他语言如JAVA类似,Go语言中包的主要作用是把功能相似或相关的代码组织在同一个包中,以方便查找和使用。在Go语言中,每个.go文件都必须归属于某一个包,每个文件都可有init()函数。包名在源文件中第一行通过关键字package指定,包名要小写。如下所示:package fmt每个目录下面可以有多……

6.1 可见性规则在Go语言中,标识符必须以一个大写字母开头,这样才可以被外部包的代码所使用,这被称为导出。标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的。但是包名不管在什么情况下都必须小写。在设计Go语言时,设计者们也希望确保它不是过于以ASCII为中心,这意味着需要从7位ASCII的范围来扩展标识符的空间。 所以Go语言标识符规定必须是Unicode定义的……

5.1 作用域局部变量 在函数体内或代码块内声明的变量称之为局部变量,它们的作用域只在代码块内,参数和返回值变量也是局部变量。全局变量 作用域都是全局的(在本包范围内) 在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。 全局变量可以在任何函数中使用。简式变量 使用 := 定义的变量,如果新变量Ga与那个同名已定义变量 (这里就是那个全局变量Ga)不在一个作用域中……

4.1 常量以及iota常量使用关键字 const 定义,用于存储不会改变的数据。常量不能被重新赋予任何值。 存储在常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。 常量的定义格式:const identifier [type] = value,例如:const Pi = 3.14159在 Go 语言中,你可以省略类型说明符 [type],因为编译器可以根据变量(常量)的……

3.1 变量以及声明Go 语言中有四类标记:标识符(identifiers),关键字(keywords),运算符(operators )和标点符号(punctuation)以及字面量(literals) 。Go 语言变量标识符由字母、数字、下划线组成,其中首个字母不能为数字,同一字母的大小写在Go语言中代表不同标识,注意区分A 和a 是不同的标识。根据Go语言规范,标识符命名程序实体,例如变量和类……

在 Go 语言中,数据类型可用于参数和变量声明。2.1 基本数据类型Go 语言按类别有以下几种数据类型:布尔型:布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。数字类型:整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。字符串类型:字符串就是一串固定长度的字符连接起……

Go语言是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型, 函数多返回值,错误处理,匿名函数, 并发编程,反射,defer等关键特征,并具有简洁、安全、并行、开源等特性。从语言层面支持并发,可以充分的利用CPU多核,Go语言编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。系统标准库功能完备,尤其是强大的网络库让建立Web服务成为再简单不过的事情。简单易学,内置ru……

写《Go语言四十二章经》,纯粹是因为开发过程中碰到过的一些问题,踩到过的一些坑,感觉在Go语言学习使用过程中,有必要深刻理解这门语言的核心思维、清晰掌握语言的细节规范以及反复琢磨标准包代码设计模式,于是才有了这本书。Go语言以语法简单、门槛低、上手快著称。但入门后很多人发现要写出地道的、遵循 Go语言思维的代码却是不易。在刚开始学习中,我带着比较强的面向对象编程思维惯性来写代码。但后来发现,带着面……

gox入门教程先说下交叉编译是什么? 交叉编译也就是你可以在linux上编译出可以在windows上运行的程序,在32位系统编译出64位系统运行的程序。gox就是方便你使用golang的交叉编译的工具。安装gox首先你的机器上需要装有golang。配置好了GOROOT,GOPATH这两个环境变量。 我机器上的配置是这个样子(仅供参考)export GOROOT=$HOME/go……

一、函数原型int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock);123     根据文件描述符来操作文件的特性。可以改变一个已打开的文件的属性,可以重新设置读、写、追加、非阻塞等标志(这些标志称为 File……

所有在Linux系统下 arp -d $ip 命令只能清除一个IP地址的对应MAC地址缓存,可以使用组合命令操作。组合命令清楚所有arp缓存:arp -n|awk '/^[1-9]/{system("arp -d "$1)}'以上命令必须 root 才可以执行。使用ip命令清除某一网络接口的arp(下面命令是 eth0 接口)ip neigh flush  dev eth0Linux 清……

tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句来删选去掉无用的信息。tcpdump选项说明:-A 以ASCII格式打印出所有分组,并将链路层的头最小化-c 在收到指定的数量的分组后,tcpdump就会停止-C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_……

用 top 发现 virt 的使用量一直在涨,于是可以断定有内存泄露(也可以查看 /proc/<pid>/maps ,相应 pid 进程的 maps 文件中出现了很多内存碎片,也说明内存泄露)。经过排查,最终确定问题出现在多线程上。如图:查询资料了解到: (1)Linux man page里是这样讲的: When a joinable thread terminat……