随笔分类 - Golang
摘要:安装 参考github的说明 添加GOPATH 创建workspace 创建新文件 运行程序 Liteide中运行程序有两种方式: FR(FileRun)是编译并运行单个文件,可以使用Shift + Alt + R快捷键; BR(BuildAndRun)是编译运行整个项目,可以使用Command +
阅读全文
摘要:Golang 入门~~基础知识 Golang 数组、切片、映射 Golang 进行reslice时的注意事项 Golang 格式化输出fmt.Printf Golang 函数 Golang 字符串操作--使用strings、strconv包 Golang panic和recover Golang s
阅读全文
摘要:strings包 strconv包
阅读全文
摘要:利用io/ioutil包一次性读取一个文件的所有内容--ReadFile 分多次读,每次读取指定长度的文件内容--Read 注意,使用os的Read时, 1、如果文件的内容长度大于buffer切片的长度,那么,只会读取文件buffer切片长度的内容,返回的长度就是切片的长度。 2、如果文件内容小于切
阅读全文
摘要:golang中涉及到时间的包就是time,包括时间戳、程序休眠、定时器、重复执行的定时器等 获取当前时间 转化为时间戳 注意标准时间格式和时间戳的时候,虽然使用的方法名是一样的,方法名,当这并不意味着主体是一样的。 标准时间转换为时间戳:使用的当前时间的实例; 而将时间戳转换为标准时间的时候,使用的
阅读全文
摘要:go语言的正则表达式匹配,可以使用go语言的regexp包。 go语言的正则表达式和其他语言的正则表达式规则都是一样的,只是调用的函数不同而已 推荐在构造正则表达式时,使用` pattern `格式。 regexp.Match func Match(pattern string, b []byte)
阅读全文
摘要:Golang语言中,进程间通信除了使用channel,还可以使用共享内存,即sync包。 Q-1 上面的代码毫无疑问的只会输出:“主goroutine执行结束”,而不会输出子goroutine执行结束,这是因为,主协程一旦执行完毕,整个进程就会结束。 sync组等待 sync包中常用的有三个方法:A
阅读全文
摘要:使用goroutine的方法很简单,直接在语句前面加go关键字即可,如果是多核处理器的电脑,使用gorountine,就会在另外一个CPU上执行goroutine,子协程不一定会和主协程在一个CPU上执行。 这里有两个注意的地方,使用go关键字的进程称之为子协程,而没有使用go关键字的进程称之为主协
阅读全文
摘要:结构体通过实现接口中定义的方法来实现接口。 简单入门 结构体赋值接口 如果一个struct实现了interface中的所有方法,那么可以将一个struct的变量赋值给一个interface,只实现一部分方法,那么就不能赋值操作。 这个例子中,如果notifier中还有一个demo()方法,但是per
阅读全文
摘要:方法是依托于结构体的,正如前面说的:结构体和其他面向对象语言中的class同等地位。 定义方法 格式: 示例: 是否使用指针设计是否要修改调用方法的结构体内部成员属性,调用的时候,可以不用关心定义方法时是使用指针还是变量。 如果是非指针类型,那么就是值传递,在方法内部修改成员属性,并不会反映到实际的
阅读全文
摘要:JSON编码 使用encoding/json包 func Marshal(v interface{}) ([]byte, error) 对结构体进行json编码 对结构体进行编码的时候,要注意,只会对可见的属性字段进行编码,不会对不可见的属性进行编码。 也就是说,只有当结构体中的属性首字母是大写的,
阅读全文
摘要:golang中的结构体(struct)和其他面向对象语言中的class一样,虽然不支持继承,但是支持组合。 声明结构体 注意:结构体中成员属性的顺序很重要,即使两个结构体成员属性相同,但是顺序不同,那么这个两个结构体不相同。 嵌套结构体 匿名嵌套 非匿名嵌套 匿名组合-重名问题 匿名结构体 结构体进
阅读全文
摘要:Linux很常用的curl命令,在golang中可以使用net/http来实现 模拟get请求 func Get(url string) (resp *Response, err error) 模拟POST请求 func Post(url string, bodyType string, body
阅读全文
摘要:通过反射(Reflection),可以在程序运行时,获取对象的类型信息,包括确定对象的类、确定对象的类型的所有成员变量和方法、动态调用对象的方法。 接口类型变量转换为反射类型对象 反射类型对象转换为接口类型变量 转换前后,p是一样的(内存地址是一样的) 通过反射类型对象修改接口类型变量的值 如果要修
阅读全文
摘要:类型断言即判断一个变量是不是某个类型的实例,这个经常用在判断接口的类型,基本的格式: 上面的语句用于判断变量x是不是type类型,有两种结果: 注意判断x是不是type类型的变量时,那么 type类型的结构(struct) 就必须实现 x类型的接口,否则进行类型断言是不合法的。 看一个完整的示例:
阅读全文
摘要:先看下面代码: 然后再看这么一个代码: 综上所述:当我们调用append向一个新的slice添加元素时: 如果新的slice在append之后,新slice的cap没有改变(即新slice的len仍小于新slice的cap),那么,至少在cap改变之前,append的行为结果都会反映到原slice
阅读全文
摘要:panic 关键字panic的作用是制造一次宕机,宕机就代表程序运行终止,但是已经“生效”的延迟函数仍会执行(即已经压入栈的defer延迟函数,panic之前的)。 为什么要制造宕机呢?是因为宕机不容易遇到?还是因为程序有错就是直接报错,都没有执行,哪来的宕机? Go程序设计语言中这样提到:如果碰到
阅读全文
摘要:本文来源:Go by example。 Golang的格式化输出 和 C语言的标准输出基本一样,但是增加了一些针对Golang语言的特有数据结构的格式化输出方式。 一下就是实例:
阅读全文
摘要:创建函数 可变参数 如果一个函数的参数个数是可变的,那么可以在定义函数时,在参数列表的最后一个参数类型之前加上... 函数多返回值 错误处理 defer defer后面的函数在Go程序设计语言中被称为延迟函数,为什么叫延迟呢?因为这个defer函数的存在于一个函数之中(包括main函数),defer
阅读全文
摘要:定义数组 数组访问与数组长度 数组遍历 数组作为函数参数 数组作为函数作为参数时,如果是给形参传递数组名,那么就是传值操作,传递的是数组的副本,修改副本的内容,并不会影响实参。 要想在函数中对数组的修改作用到实参,可以用数组指针,即->使用指针的形式,将数组的地址传递给函数,并且函数定义时,接收一个
阅读全文