07 2018 档案
摘要:ubuntu基本命令: cd 、 pwd 、 ls 、 mkdir 、 touch 、 sudo apt install tree 、 ctrl + c软件管理: 更新软件源 安装软件 自定义软件源 sudo apt update 、 sudo apt install tree 、 sudo apt
阅读全文
摘要:内嵌一个T类型,那么T的方法都被纳入。内嵌允许构成复杂的类型,该类型由许多字段构成,每个字段提供一些方法。内嵌能够帮助我们在未命名的结构体类型中声明方法。
阅读全文
摘要:由于主调函数会复制每一个实参变量,如果要更新变量或避免复制,我们需要指针传递。同样适合于更新接收者。习惯上,如果一个方法使用指针接收者,那么所有的方法应该使用指针接收者。编译器会对变量进行隐式转换:1.实参和形参接受者同类型,不转换2.实参是T,形参是*T。编译器会隐式获取变量的地址。3.实参是*T
阅读全文
摘要:Go和许多其他面向对象的语言不同,它可以将方法绑定到任何类型上。同一个包下的任何类型都可以声明方法,只要它的类型既不是指针类型也不是接口类型。类型拥有的所有方法名必须是唯一的,但不同的类型可以使用相同的方法名。
阅读全文
摘要:Go语言只有一种方式控制命名的可见性:首字母大写的标识符是可以从包中导出的。要封装一个对象,必须使用结构体。
阅读全文
摘要:方法变量,函数只需要提供实参而不需要提供接受者就能够调用。p := Point{1, 2}q := Point{4, 6}d := p.Distance //方法变量fmt.Println(d(q)) //"5"方法表达式,把原来的方法接收者替换成函数的第一个形参,因此它可以像平常的函数一样调用。p
阅读全文
摘要:退出程序通常是正确处理宕机的方式,最安全的做法还是选择性地使用recover。
阅读全文
摘要:函数变量也有类型,可以赋值给变量或者传递或从其他函数中返回。函数类型的零值是nil,调用一个空的函数变量将导致宕机。函数类型本身不可比较。
阅读全文
摘要:Go语言的类型系统会捕获许多编译时错误。Go语言运行时检测到错误(比如数组越界,引用空指针等),它就会发生宕机。当宕机发生时,所有的延迟函数以倒序执行。Go语言的宕机机制让延迟执行的函数在栈清理之前调用。
阅读全文
摘要:变长函数被调用的时候可以有可变的参数个数。在参数列表最后的类型名称之前使用省略号“...”表示声明一个变长函数。变长函数参数实际是一个slice。变长函数通常用于格式化字符串(...interface{})变长函数的类型和一个带有普通slice参数的函数类型是不一样的。
阅读全文
摘要:Go语言实现了可变长度的栈,栈的大小会随着使用而增长,可达到1G左右的上限。这使我们可以安全使用递归而不用担心溢出问题。
阅读全文
摘要:如果省略号“...”出现在数组长度的位置上,数组的长度由初始化数组的元素个数决定。 一种写法: 定义一个拥有100个元素的数组,最后一个元素是-1比较:一个数组的元素类型是可比较的,那么这个数组也是可比较的==和!=
阅读全文
摘要:slice的三个属性:指针,长度,容量append([]Type, Type)copy(dst []Type, src []Type)slice可以实现栈
阅读全文
摘要:初始化: 1.按顺序初始化。p := Point{1, 2}2.全部或部分指定成员变量的名称来初始化。p := Point{X:1, Y:2}如果结构体所有的成员变量可以比较,那么这个结构体就是可比较的。匿名成员和结构体嵌套
阅读全文
摘要:map是一个拥有键值对元素的无序集合。在Go语言中,map是散列表的引用。map[K]V所有的键都有相同的数据类型,同时所有的值也有相同的数据类型。键K,必须是可以通过操作符==来进行比较的数据类型,所以map可以检测某一键是否已经存在。使用make创建map: 使用map的字面量来新建一个带初始化
阅读全文
摘要:只有可导出的成员可以转换为JSON字段。 //结构体成员名首字母大写才可以转换JSONtype Movie struct { Title string //字符串 Year int `json:"date"` //原生字符串 对应到date的成员标签 键json控制包encoding/json行为,同理其他包encoding/...}m1 := new(Movie) m1.Title ...
阅读全文
摘要:4个标准包对字符串操作非常重要:bytes, strings, strconv和unicode。strings包提供了很多函数,用于搜索、替换、比较、修整、切分和连接字符串bytes包也有类似函数,用于操作[]byte。由于字符串不可变,因此按增量方式构建字符串会导致多次内存分配和复制。这种情况使用
阅读全文
摘要:有符号整数:int8 int16 int32 int64无符号整数: uint8 uint16 uint32 uint64无符号整数使用场景: 往往用于位运算符和特定算术运算符int、uint、uintptr:32位或64位,根据硬件平台和编译器而不同rune:常常指Unicode码点。int32同
阅读全文
摘要:字符串不可改变,所以字符串内部的数据不允许被修改。不可变意味着两个字符串能安全公用同一段底层内存。例如:s和s[1:],s的子串没有分配新内存。字符串字面量:双引号的字节序列转义符:\n, \', \", \\, \b(退格符)十六进制转义符: \xhh 八进制转义符: \ooo且不能超过\377原
阅读全文
摘要:Unicode第8版定义了超过一百种语言文字的12万个字符的码点。天然适合保存单个文字符号的数据类型是int32,为Go语言采用。rune类型作为int32类型的别名。我们可以将文字符号的序列表示成int32值序列,这种表示方式称作UTF-32或UCS-4,每个Unicode码点的编码长度相同,都是
阅读全文
摘要:编码规则0xxxxxxx 文字符号0~127(ASCII)110xxxxx 10xxxxxx 128~20471110xxxx 10xxxxxx 10xxxxxx 2048~6553511110xxx 10xxxxxx 10xxxxxx 10xxxxxx 65535~0x10ffff变长编码,每个文
阅读全文
摘要:声明给一个程序实体命名,并且设定其部分或全部属性。有4个主要的声明:变量、常量、类型和函数。一个GO程序文件:以package声明开头,表明文件属于哪个包然后是import声明然后是包级别的类型、变量、常量、函数的声明,不区分顺序
阅读全文
摘要:type声明定义一个新的命名类型,提供一种方式区分相同底层类型,这样不会混用。例如: w和m不是相同类型,即使底层都是float64。他们不能使用算术表达式比较和合并。一个类的String可以重写例如:
阅读全文
摘要:命名规则:Go中函数、变量、常量、类型、语句标签和包的名称都遵循一个规则,开头是一个字母或下划线,后面跟任意字符、数字和下划线,并区分大小写。例如:heapSort和HeapSort是不同名称。关键字:Go有25个关键字,例如:for、type、return......另外还有三十几个内置的预声明的
阅读全文
摘要:多重赋值:交换俩个变量的值时很方便,例如:x, y = y, x可赋值性:赋值语句是显式的赋值,但程序中很多地方是隐式赋值,例如函数中的参数,函数中的return。复合类型的字面量表达式:me := []string{"a", "b", "c"}
阅读全文
摘要:生命周期指在程序执行过程中变量存在的时间段。Go语言中编译器可以选择使用堆或栈上的空间来分配,而不是基于var或new。Go语言有逃逸识别的机制,但每一次变量逃逸都需要额外的内存分配过程。例如:x逃逸
阅读全文
摘要:变量声明的通用形式:var name type = expression其中type和expression,可省略其一。省略type,变量类型由expression决定。省略expression,变量的值是该类型的零值,对于接口和引用类型(slice、指针、map、通道、函数)是nil。对于数组或结
阅读全文
摘要:包所在目录名就是包的导入路径,例如:gopl.io/chi/helloworld包存储在$GOPATH/src/gopl.io/ch1/helloworld包给它的声明提供了独立命名空间,例如:image.Decode和utf16.Decodepackage声明前面紧挨着是文档注释,对整个包进行描述
阅读全文
摘要:使用new函数是另一种创建变量的方式。创建一个未命名的T类型变量,初始化为T类型的零值,并返回其地址。例如: p := new(int)使用new函数创建变量和取其地址的普通局部变量没有不同,只是不需要引入声明时的一个名字,有语法上的便利。例如: var du int p := &du 和 p :=
阅读全文
摘要:任意类型转换字节分片 (任意类型需是指明的占位大小 例如:int8 int16 float32......例如int不可以)
阅读全文
摘要:本文转自Golove博客:http://www.cnblogs.com/golove/p/3276678.html io 包为I/O原语提供了基础的接口.它主要包装了这些原语的已有实现,如 os 包中的那些,抽象成函数性的共享公共接口,加上一些其它相关的原语。 由于这些接口和原语以不同的实现包装了低
阅读全文
摘要:1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0
阅读全文
摘要:[Desktop Entry]Name=GoLandExec=sh /opt/GoLand-2018.1.4/bin/goland.shIcon=/opt/GoLand-2018.1.4/bin/goland.pngType=ApplicationStartupNotify=true
阅读全文
摘要:从远程库github克隆到本地库git clone git@github.com:eatbytecooike/myblog.git注:git支持多种协议,包括https,ssh
阅读全文
摘要:将本地库和远程库关联git remote add origin(备注名) git@github.com:michaelliao/learngit.git第一次将本地库推送到远程库上git push -u origin(备注名) master推送修改git push origin master
阅读全文
摘要:本地Git仓库和GitHub仓库之间是通过ssh加密传输的1.创建ssh key。在用户主目录下查看是否有.ssh目录。其中id_rsa和id_rsa.pub为私钥和公钥文件$ ssh-keygen -t rsa -C "mymail@e.com"2.登录GitHub,在账户设置SSH Keys里添
阅读全文

浙公网安备 33010602011771号