07 2018 档案

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