
go
Claroja
这个作者很懒,什么都没留下…
展开
-
Go 语言
基本类型go语言 数组引用类型go语言 slicego语言 map指针类型函数go语言 函数go语言 匿名函数运算符与控制语句go语言 运算符go语言 控制语句go语言 defer...原创 2020-01-01 21:46:37 · 1147 阅读 · 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 · 215 阅读 · 0 评论 -
go语言 同步-读写锁
“读”操作不存在资源竞争的问题读写锁由结构体类型sync.RWMutex表示。此类型的方法集合中包含两对方法:一组是对写操作的锁定和解锁,简称“写锁定”和“写解锁”:func (*RWMutex)Lock()func (*RWMutex)Unlock()2.另一组表示对读操作的锁定和解锁,简称为“读锁定”与“读解锁”:func (*RWMutex)RLock()func (*RW...原创 2020-01-01 21:21:22 · 221 阅读 · 0 评论 -
go 同步-互斥锁
上锁后任意时刻,只能有一个协程(线程)访问该资源,其他协程等待标准库sync中的Mutex结构体类型表示,sync.Mutex类型只有两个公开的指针方法,Lock和Unlockpackage mainimport ( "fmt" "sync" "time")var mutex sync.Mutex // 创建一个互斥量,新建的互斥锁状态为0func printer(st...原创 2020-01-01 21:20:49 · 217 阅读 · 0 评论 -
go语言 select
通过select可以监听channel上的数据流动case语句里必须是一个IO操作在一个select语句中,Go语言会按顺序从头至尾评估每一个发送和接收的语句如果case满足,则执行对应语句如果case全部不满足(即所有的通道都被阻塞)default语句,那么就会执行default语句如果没有default语句,那么select语句将被阻塞package mainimp...原创 2020-01-01 21:20:16 · 165 阅读 · 0 评论 -
go语言 channel
package mainimport ( "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 · 136 阅读 · 0 评论 -
go语言 time
三种定时方法package mainimport ( "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 · 160 阅读 · 0 评论 -
go语言 协程
1.使用go关键字,放置于函数调用前2.主go程结束,子go程随之退出package mainimport ( "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 · 183 阅读 · 0 评论 -
go语言 gosched
runtime.Gosched() 出让cpupackage mainimport ( "fmt" "runtime")func main() { go func() { for { fmt.Println("子协程") } }() for { //主协程 runtime.Gosched() // 出让当前 cpu 时间片,由子协程抢占 fmt.Pr...原创 2020-01-01 21:17:25 · 371 阅读 · 0 评论 -
go语言 recover
就是trypackage mainimport "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 · 4728 阅读 · 0 评论 -
go语言 硬盘IO
写入os.Open(文件名) 只读方式打开文件package mainimport ( "os" "fmt")func main() { //\反斜杠在程序中表示转义字符 会将后面一个字符进行转义 [\\]表示一个[\] //在写路径是可以使用/正斜杠来代替\反斜杠 fp, err := os.Create("D:/a.txt") if err != nil { ...原创 2020-01-01 21:15:43 · 549 阅读 · 0 评论 -
go语言 panic
panic 就是报错退出,类似于raisepackage mainimport "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 · 183 阅读 · 0 评论 -
go语言 error
package mainimport ( "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 · 162 阅读 · 0 评论 -
go语言 多态
package mainimport "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 · 323 阅读 · 0 评论 -
go语言 接口
package mainimport "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 · 119 阅读 · 0 评论 -
go语言 方法继承
重写package mainimport "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 · 178 阅读 · 0 评论 -
go 继承-方法
package mainimport "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 · 961 阅读 · 0 评论 -
go语言 继承
基础本质就是结构体package mainimport "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 · 245 阅读 · 0 评论 -
go语言 格式化输出
格式含义%%一个%字面量%b一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数%c字符型。可以把输入的数字按照ASCII码相应转换为对应的字符%d一个十进制数值(基数为10)%e以科学记数法e表示的浮点数或者复数值%E以科学记数法E表示的浮点数或者复数值%f以标准记数法表示的浮点数或者复数值...原创 2020-01-01 13:03:13 · 595 阅读 · 0 评论 -
go 数据类型
类型名称长度零值说明bool布尔类型1false其值不为真即为假,不可以用数字代表true或falsebyte字节型10uint8别名rune字符类型40专用于存储unicode编码,等价于uint32int, uint整型4或80有符号32位或无符号64位int8整型10-128 ~ 127,uint...原创 2020-01-01 13:02:45 · 231 阅读 · 0 评论 -
go语言 类型转换
基础go没有隐式转换go语言中没有非零即真的概念,不能将bool转换为整型强制转换package mainimport "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 · 266 阅读 · 0 评论 -
go语言 常量
常量定义package mainimport "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 · 159 阅读 · 0 评论 -
go 字符串转换
转换字符串与切片str:="hello world"slice:=[]byte(str)slice:=[]byte{'h','e','l','l','o',97}string(slice)字符与布尔字符与整形字符与浮点型原创 2020-01-01 13:00:22 · 479 阅读 · 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 · 147 阅读 · 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 · 142 阅读 · 0 评论 -
go语言 set
go中没有实现set可以用map的key来代替使用go get -u gopkg.in/fatih/set.v0package mainimport ( "fmt" "gopkg.in/fatih/set.v0")/*set并集 交集 差集计算示例*/func main() { a := set.New(set.ThreadSafe) a.Ad...原创 2020-01-01 12:58:19 · 966 阅读 · 0 评论 -
go语言 指针
基础var a int = 10var p *int = &a # 获得变量a的内存地址*p = 123 # 修改值nil初始化指针的默认值,空指针声明指针变量 默认值为0x0 (nil)var p *int = nilnew在堆中开辟内存空间new(数据类型) 开辟数据类型对应的内存空间 返回值为数据类型指针p = new(int)*p = 123野...原创 2020-01-01 12:56:33 · 202 阅读 · 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 · 202 阅读 · 0 评论 -
go语言 map
基础语法语法map[键类型]值类型 map[key]valuevar m map[int]string = map[int]string{101: "法师", 251: "张超", 666: "怡红"}遍历//k->key v->value//for k, v := range m {// fmt.Println(k, v)//}keymap中的key必...原创 2020-01-01 12:54:43 · 134 阅读 · 0 评论 -
go语言 slice
基础数组的长度是固定的,切片的长度是不固定的a:=[5]int{ } // 数组定义,必须有长度s:=[ ]int{ }//切片定义,没有长度appendslice = append(slice, 456)slice = append(slice, 1, 2, 3)len&cap在使用appned进行数据添加时 如果长度超出容量 容量会自动扩容一般扩容方式为...原创 2020-01-01 12:54:17 · 143 阅读 · 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 · 156 阅读 · 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 · 174 阅读 · 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 · 152 阅读 · 0 评论 -
go语言 defer
func main() { defer fmt.Println("1") defer fmt.Println("2") defer fmt.Println("3")}原创 2020-01-01 12:47:59 · 124 阅读 · 0 评论 -
go语言 控制语句
if基本结构 if 条件判断{ 代码语句}if —else—结构if 条件判断{ 代码语句1}else{ 代码语句2}if-else if 结构if 条件判断{ 要执行的代码段}else if 条件判断{ 要执行的代码段}else{ 要执行的代码段}switchswitch 变量或者表达式的值{ case 值1: 要执行的代码 case...原创 2020-01-01 12:46:57 · 201 阅读 · 0 评论 -
go语言 运算符
运算符术语示例结果!非!a如果a为假,则!a为真;如果a为真,则!a为假。&&与a && b如果a和b都为真,则结果为真,否则为假。\\或a || b如果a和b有一个为真,则结果为真,二者都为假时,结果为假。...原创 2020-01-01 12:45:33 · 159 阅读 · 0 评论