go
Claroja
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Go 语言
基本类型 go语言 数组 引用类型 go语言 slice go语言 map 指针类型 函数 go语言 函数 go语言 匿名函数 运算符与控制语句 go语言 运算符 go语言 控制语句 go语言 defer ...原创 2020-01-01 21:46:37 · 1196 阅读 · 0 评论 -
go 条件变量
条件变量:共享数据的状态发生变化时,通知阻塞在某个条件上的协程(线程) 条件变量是一个结构体,Cond.L要搭配锁一起使用 type Cond struct { noCopy noCopy // L is held while observing or changing the condition L Locker notify notifyList check...原创 2020-01-01 21:21:50 · 249 阅读 · 0 评论 -
go语言 同步-读写锁
“读”操作不存在资源竞争的问题 读写锁由结构体类型sync.RWMutex表示。此类型的方法集合中包含两对方法: 一组是对写操作的锁定和解锁,简称“写锁定”和“写解锁”: func (*RWMutex)Lock() func (*RWMutex)Unlock() 2.另一组表示对读操作的锁定和解锁,简称为“读锁定”与“读解锁”: func (*RWMutex)RLock() func (*RW...原创 2020-01-01 21:21:22 · 281 阅读 · 0 评论 -
go 同步-互斥锁
上锁后任意时刻,只能有一个协程(线程)访问该资源,其他协程等待 标准库sync中的Mutex结构体类型表示,sync.Mutex类型只有两个公开的指针方法,Lock和Unlock package main import ( "fmt" "sync" "time" ) var mutex sync.Mutex // 创建一个互斥量,新建的互斥锁状态为0 func printer(st...原创 2020-01-01 21:20:49 · 265 阅读 · 0 评论 -
go语言 select
通过select可以监听channel上的数据流动 case语句里必须是一个IO操作 在一个select语句中,Go语言会按顺序从头至尾评估每一个发送和接收的语句 如果case满足,则执行对应语句 如果case全部不满足(即所有的通道都被阻塞) default语句,那么就会执行default语句 如果没有default语句,那么select语句将被阻塞 package main imp...原创 2020-01-01 21:20:16 · 206 阅读 · 0 评论 -
go语言 channel
package main import ( "fmt" "time" ) var channel = make(chan int) // 全局定义channel, 用来完成数据同步 func printer(s string) { for _, ch := range s { fmt.Printf("%c", ch) time.Sleep(300 * time.Millisec...原创 2020-01-01 21:19:22 · 179 阅读 · 0 评论 -
go语言 time
三种定时方法 package main import ( "time" "fmt" ) func main() { // 1 . sleep time.Sleep(time.Second) // 2. Timer.C myTimer := time.NewTimer(time.Second * 2) // 创建定时器, 指定定时时长, nowTime := <- my...原创 2020-01-01 21:18:43 · 209 阅读 · 0 评论 -
go语言 协程
1.使用go关键字,放置于函数调用前 2.主go程结束,子go程随之退出 package main import ( "fmt" "time" ) func sing() { for i := 0; i < 100; i++ { fmt.Println("----sing----") time.Sleep(100 * time.Millisecond) // 暂停100毫秒...原创 2020-01-01 21:17:59 · 242 阅读 · 0 评论 -
go语言 gosched
runtime.Gosched() 出让cpu package main import ( "fmt" "runtime" ) func main() { go func() { for { fmt.Println("子协程") } }() for { //主协程 runtime.Gosched() // 出让当前 cpu 时间片,由子协程抢占 fmt.Pr...原创 2020-01-01 21:17:25 · 418 阅读 · 0 评论 -
go语言 recover
就是try package main import "fmt" func demo(i int) { //错误拦截到出现在错误之前 defer func() { err := recover() //错误拦截 panic异常错误 if err != nil { fmt.Println(err) } }() var arr [10]int arr[i] = 123 ...原创 2020-01-01 21:16:27 · 5115 阅读 · 0 评论 -
go语言 硬盘IO
写入 os.Open(文件名) 只读方式打开文件 package main import ( "os" "fmt" ) func main() { //\反斜杠在程序中表示转义字符 会将后面一个字符进行转义 [\\]表示一个[\] //在写路径是可以使用/正斜杠来代替\反斜杠 fp, err := os.Create("D:/a.txt") if err != nil { ...原创 2020-01-01 21:15:43 · 634 阅读 · 0 评论 -
go语言 panic
panic 就是报错退出,类似于raise package main import "fmt" func test(i int) { var arr [10]int panic("runtime error: index out of range") arr[i] = 123 fmt.Println(arr) } func main() { test(10) } ...原创 2020-01-01 21:14:56 · 230 阅读 · 0 评论 -
go语言 error
package main import ( "errors" "fmt" ) func dive(a int, b int) (value int, err error) { if b == 0 { err = errors.New("除数不能为0") return } value = a / b return } func main() { a := 10 b :=...原创 2020-01-01 21:14:28 · 203 阅读 · 0 评论 -
go语言 多态
package main import "fmt" type Humaner interface { Say() } type Student struct { name string age int } type Teacher struct { name string age int } func (s *Student) Say() { fmt.P...原创 2020-01-01 21:13:35 · 374 阅读 · 0 评论 -
go语言 接口
package main import "fmt" //先定义接口 type Humaner interface { Say() //只定义不实现 } type Student struct { name string age int } func (s *Student) Say() { fmt.Printf(s.name, s.age) } func main()...原创 2020-01-01 21:13:00 · 158 阅读 · 0 评论 -
go语言 方法继承
重写 package main import "fmt" type person struct { id int name string } type student struct { person class int } func (p *person8) Say() { fmt.Printf(p.name) } //子类对象和父类对象的方法名重名 func (s ...原创 2020-01-01 13:06:28 · 224 阅读 · 0 评论 -
go 继承-方法
package main import "fmt" type student5 struct { name string age int } //函数 func Print() { fmt.Println("hello world") } //通过函数给对象添加方法,go这么搞... func (s student5) Print() { fmt.Printf("%p\n",...原创 2020-01-01 13:05:57 · 1085 阅读 · 0 评论 -
go语言 继承
基础 本质就是结构体 package main import "fmt" //父类(父结构体) type Person struct { id int name string age int } //子类(子结构体) type Student struct { Person //也可取变量名(p Person) class int score int } func mai...原创 2020-01-01 13:04:48 · 289 阅读 · 0 评论 -
go语言 格式化输出
格式 含义 %% 一个%字面量 %b 一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数 %c 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符 %d 一个十进制数值(基数为10) %e 以科学记数法e表示的浮点数或者复数值 %E 以科学记数法E表示的浮点数或者复数值 %f 以标准记数法表示的浮点数或者复数值 ...原创 2020-01-01 13:03:13 · 662 阅读 · 0 评论 -
go 数据类型
类型 名称 长度 零值 说明 bool 布尔类型 1 false 其值不为真即为假,不可以用数字代表true或false byte 字节型 1 0 uint8别名 rune 字符类型 4 0 专用于存储unicode编码,等价于uint32 int, uint 整型 4或8 0 有符号32位或无符号64位 int8 整型 1 0 -128 ~ 127, uint...原创 2020-01-01 13:02:45 · 259 阅读 · 0 评论 -
go语言 类型转换
基础 go没有隐式转换 go语言中没有非零即真的概念,不能将bool转换为整型 强制转换 package main import "fmt" func main() { var sum int = 3 var count int = 2 var mean float32 mean = float32(sum)/float32(count) fmt.Printf...原创 2020-01-01 13:02:04 · 316 阅读 · 0 评论 -
go语言 常量
常量定义 package main import "fmt" func main() { //变量:运行期间,可以改变的量,var //常量:运行期间,不可以改变的量,const const a int = 1 fmt.Println(a) //自动推导类型常量(没有用:=) const b = 2 fmt.Println(b) } 字面常量f 字面常量(literal)程序...原创 2020-01-01 13:01:24 · 197 阅读 · 0 评论 -
go 字符串转换
转换 字符串与切片 str:="hello world" slice:=[]byte(str) slice:=[]byte{'h','e','l','l','o',97} string(slice) 字符与布尔 字符与整形 字符与浮点型原创 2020-01-01 13:00:22 · 526 阅读 · 0 评论 -
go语言 字符串处理
方法 Contains(被查找字符串,查找字符串),查找一个字符串在另一个字符串内是否出现 b:=strings.Contains(str1,str2) Join字符串连接 slice:=[]string{"1","2","3","4"} str:=strings.Join(slice,",") ...原创 2020-01-01 12:59:42 · 189 阅读 · 0 评论 -
go语言 字符串
基础 import "string" 方法 Contains(被查找字符串,查找字符串),查找一个字符串在另一个字符串内是否出现 b:=strings.Contains(str1,str2) Join字符串连接 slice:=[]string{"1","2","3","4"} str:=strings.Join(slice,",") 转换 字符串与切片 str:="hello wor...原创 2020-01-01 12:58:53 · 170 阅读 · 0 评论 -
go语言 set
go中没有实现set 可以用map的key来代替 使用go get -u gopkg.in/fatih/set.v0 package main import ( "fmt" "gopkg.in/fatih/set.v0" ) /*set并集 交集 差集计算示例*/ func main() { a := set.New(set.ThreadSafe) a.Ad...原创 2020-01-01 12:58:19 · 1034 阅读 · 0 评论 -
go语言 指针
基础 var a int = 10 var p *int = &a # 获得变量a的内存地址 *p = 123 # 修改值 nil 初始化指针的默认值,空指针 声明指针变量 默认值为0x0 (nil) var p *int = nil new 在堆中开辟内存空间 new(数据类型) 开辟数据类型对应的内存空间 返回值为数据类型指针 p = new(int) *p = 123 野...原创 2020-01-01 12:56:33 · 244 阅读 · 0 评论 -
go语言 结构体
基础 结构体定义在函数的外部 定义函数类型type functye func(int,int)int 定义结构体类型`type 结构体名 struct {} 结构体是全局的,可以在项目中所有的文件中使用 结构体是一种数据类型 type student struct { id int name string age int sex string score int a...原创 2020-01-01 12:55:50 · 280 阅读 · 0 评论 -
go语言 map
基础语法 语法 map[键类型]值类型 map[key]value var m map[int]string = map[int]string{101: "法师", 251: "张超", 666: "怡红"} 遍历 //k->key v->value //for k, v := range m { // fmt.Println(k, v) //} key map中的key必...原创 2020-01-01 12:54:43 · 172 阅读 · 0 评论 -
go语言 slice
基础 数组的长度是固定的,切片的长度是不固定的 a:=[5]int{ } // 数组定义,必须有长度 s:=[ ]int{ }//切片定义,没有长度 append slice = append(slice, 456) slice = append(slice, 1, 2, 3) len&cap 在使用appned进行数据添加时 如果长度超出容量 容量会自动扩容 一般扩容方式为...原创 2020-01-01 12:54:17 · 179 阅读 · 0 评论 -
go语言 数组
基础 数组:是指一系列同一类型数据的集合 数组是连续的内存空间 数组定义语法:var 数组名 [元素个数]数据类型 var a [10]int 赋值 //在定义数组时 依次为数组元素赋值 //var arr [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //在定义数组是 可以为部分元素赋值 //var arr [10]int = [10]...原创 2020-01-01 12:53:39 · 190 阅读 · 0 评论 -
go语言 匿名函数
格式:func(){ 函数体 } 基本使用 使用一个变量(既是函数类型变量)接收 func main() { var num int = 9 f := func() { num = num + 1 fmt.Println("匿名函数:", num) } f() fmt.Println("main函数:", num) } 直接调用匿名函数 func main() { fu...原创 2020-01-01 12:51:37 · 218 阅读 · 0 评论 -
go语言 函数
基本语法 func 函数名(){ 函数体 } 参数 1.基础语法 func test(a int){ fmt.Println(a) } 3.不定参数列表 args(参数名字可以随便起),是列表,其中元素类型是整形 不定参数列表只能放在形参的最后一个参数 调用时固定参数必须传值,不定参数可以根据需要是否传值 func test(args ...int){ fmt.Println(ar...原创 2020-01-01 12:50:55 · 187 阅读 · 0 评论 -
go语言 defer
func main() { defer fmt.Println("1") defer fmt.Println("2") defer fmt.Println("3") }原创 2020-01-01 12:47:59 · 156 阅读 · 0 评论 -
go语言 控制语句
if 基本结构 if 条件判断{ 代码语句 } if —else—结构 if 条件判断{ 代码语句1 }else{ 代码语句2 } if-else if 结构 if 条件判断{ 要执行的代码段 }else if 条件判断{ 要执行的代码段 }else{ 要执行的代码段 } switch switch 变量或者表达式的值{ case 值1: 要执行的代码 case...原创 2020-01-01 12:46:57 · 248 阅读 · 0 评论 -
go语言 运算符
运算符 术语 示例 结果 ! 非 !a 如果a为假,则!a为真;如果a为真,则!a为假。 && 与 a && b 如果a和b都为真,则结果为真,否则为假。 \\ 或 a || b 如果a和b有一个为真,则结果为真,二者都为假时,结果为假。 ...原创 2020-01-01 12:45:33 · 208 阅读 · 0 评论
分享