随笔分类 - golang
1
摘要:ioutil 包实现了一些常用的 I/O 函数。 https://golang.org/src/io/ioutil/ func ReadAll(r io.Reader) ([]byte, error) ReadAll 读取 r 中所有数据,EOF 不会作为 error 返回。 // readAll
阅读全文
摘要:Golang 的 fallthrough package main import ( "fmt" ) func main() { a := 2 switch a { case 1: fmt.Println("a=1") case 2: fmt.Println("a=2") fallthrough c
阅读全文
摘要:go run main.go 显示 undefined 通常情况下 package main 中只有一个文件 main.go,如果有其他文件存在,那么执行 会报错显示 两种解决方案: 1. 将函数,变量等都挪到 main.go 里面 2. 执行 而不是
阅读全文
摘要:Golang Playground 进度条示例 符号 是 | Oct | Dec | Char | Hex | CTRL Key | Comments | | | | | | | | | \014 | 12 | FF | \x0C | ^L \f | (Form feed) | 换页符 会生成 ,其
阅读全文
摘要:nil length is zero ff[0] is {"",0}, length is 1
阅读全文
摘要:原文链接:https://github.com/golang/go/wiki/CodeReviewComments 1)用 goimport 代替 gofmt 2) https://golang.org/doc/effective_go.html commentary 注释单独一行,开始于描述的名字
阅读全文
摘要:1. vscode中go的相关插件被墙 http://www.pythonsite.com/?p=429 其实已经下载好了,只是目录不太对,修改一下就ok了 2. protoc go_out=. .proto运行报错 错误:`protoc gen go: program not found or i
阅读全文
摘要:目录 @[toc] 注意事项 表示当前脚本是程序入口,含有main函数 如果不是入口,只是单纯的一个包的话,就尽量与当前目录文件夹的名称保持一致,表示一个包的脚本 slice的append函数的真面目 slicez作为参数传递时是引用类型的,也就是把地址传进去了,要是做了一般的修改,就是真的修改了
阅读全文
摘要:[toc] 注意事项 goroutine只是官方的超级线程池 高并发性:占用内存小,创建销毁很快 goroutine的简单易用,也在语言层面上给予开发者巨大的便利 并发不是并行,并行是直接利用多核实现多线程的运行,并发是由切换时间片来实现“同时”运行 goroutine奉行通过通信(channel)
阅读全文
摘要:目录 @[toc] 接口的定义和基本操作 接口是一个或者多个接口声明的集合 只要某个类型拥有该接口的所有方法声明,即算实现该接口,无需显示声明实现了哪个接口,这称为structural typing 接口只有方法声明,没有实现,没有数据字段 嵌入接口 接口可以匿名嵌入其他接口,或嵌入到结构中 类型断
阅读全文
摘要:目录 @[toc] 反射基本操作 反射可大大提高程序的灵活性,使得interface{}有更大的发挥余地 反射使用TypeOf和ValueOf函数从 接口 中获取目标对象信息 反射匿名或嵌入字段 反射会将匿名字段作为独立字段(匿名字段本质) 修改目标对象 想要利用反射修改对象状态,前提是interf
阅读全文
摘要:目录 @[toc] 方法的声明和使用 receiver Go中虽没有class,但依旧有method 通过显示说明receiver来实现与某个类型的组合 不存在方法重载 不存在方法重载,像下面这样的情况是不存在的 只能为同一个包中的类型定义方法 receiver可以是类型的值或者指针 可以使用值或者
阅读全文
摘要:目录 @[toc] 定义与使用 Go中struct与C中的struct非常相似,并且Go没有class,没有构造函数 使用 结构定义,名称遵循可见性规则(大写开头表示public,非大写开头为private) 指向指向自身的指针类型成员,(类似this??) 可以使用字面值对结构进行初始化 允许直接
阅读全文
摘要:目录 @[toc] Tips Go函数 不支持 嵌套,重载 和 默认参数 但支持以下特性: 无需声明原型,不定长度变参,多返回值,命名返回值参数,匿名函数,闭包 定义函数使用关键字func,并且左大括号不能另起一行 函数定义,不定长变参,传递值类型与引用类型 值类型传递和引用类型传递都是拷贝,但是值
阅读全文
摘要:目录 @[toc] 简介 类似其他语言的哈希表或者字典,以key value的形式存储数据 key必须支持==或者!=比较运算的类型,不能是函数,map或者slice(他们都不支持),但是value可以呀,嘿嘿 map查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍(array,slice
阅读全文
摘要:目录 @[toc] 简介 slice本身不是数组,它指向底层的数组 是作为边长数组的替代方案,可以关联底层数组的局部或者全部 为引用类型,类似指针 可以直接创建或从底层数组获取生成,也可以用=直接从别的slice赋值 使用len() 获取元素个数,cap()获取容量 一般使用make()创建,mak
阅读全文
摘要:目录 @[toc] 注意事项 数组在Go中是值类型,不是引用 类型和长度都相同的数组之间可以使用==或者!=进行比较(Go中已经实现了),但是没有 Go支持多维数组 数组定义 Tips 两个数组不能直接赋值 数组定义格式: 数组长度也是类型的一部分,因此不同长度数组为不同的类型 可以用索引初始化下标
阅读全文
摘要:[toc] 注意事项 运算符 tips Go中的运算符都是从左到右结合的 优先级从高到低: 移位运算 a "运算符,直接采用"."来操作指针目标对象成员 操作符"&"去变量地址,使用" "通过指针间接访问目标对象 默认值是 nil ,不是NULL 递增递减语句 在Go中,++与 作为语句而不是表达式
阅读全文
摘要:目录: @[toc] 注意事项 省略调用和别名不能同时使用 go关键字25个,都是小写 常量,变量,类型,接口,结构,首字母大写就是public,首字母小写是private,一个包是一个整体 常量,变量,一般类型(非struct,interface)都可以组合成组 var只能声明全局变量,也可以在函
阅读全文
摘要:[toc] Commentary(注释) 每一个包都应该有一个 commentary,多文件的包在一个文件里 commentary 就可以了,内容详细或简洁由包来决定 使用纯文本,注意拼写,语法,句子结构 每一个(大写字母开头)导出的名字,都应该有一个 doc commentary doc comm
阅读全文
1

浙公网安备 33010602011771号