GO
Ares82219102
吾生也有涯,而知也无涯
展开
-
GO-并发编程
一、Linux进程之间的通信方式1.基于数据传送:管道(字节流)、消息队列(结构化对象)2.基于共享内存:共享内存区3.异步IPC:操作系统的信号机制(signal)4.同步IPC:信号量(semaphore)5.套接字(socket)6.管道(pipe)go语言支持的IPC:pipe、signal、socketgoroutine之间的通信方式:channel二、程序、进程、线程、goroutine之间的区别程序:存储在磁盘中的静态文件进程:资源分配的最小单位线程:CPU调度的最小原创 2021-10-07 20:22:28 · 554 阅读 · 0 评论 -
GO-io库
golang-io库ioio/fsio/ioutilioTeeReader 的一心二用(边读编写)MultiReader 的先来后到(顺序读取)MultiWriter 的同甘共苦(写一即多)Pipe 的绝不先做(写->读->写->读->…)创建读取器,即实现io.Reader接口r := strings.NewReader("some io.Reader stream to be read")r1, _ := os.Open("D:\\project\\go_pro原创 2021-10-05 17:01:29 · 1861 阅读 · 0 评论 -
GO-反射
Go语言-反射一、什么是反射二、反射的两种基本类型(Value/Type)三、Value.Type()/Kind()四、Value.Interface()五、Value.Elem()六、Value.Set()七、结构体与反射一、什么是反射反射是程序在运行时检查、修改自身结构和行为的能力在Go中,一切皆类型,反射也是一种类型二、反射的两种基本类型(Value/Type)//Type和Value是反射的两种基本类型type Type interface {...}type Value struct原创 2021-10-05 16:36:28 · 208 阅读 · 0 评论 -
GO-结构体
package mainimport "fmt"//定义结构体type Profile struct{ name string age int gender string mother *Profile father *Profile}//定义结构体方法,以值做为方法接收者,无法改变实例属性//当方法的首字母为大写时,这个方法对于所有包都是Public,其他包可以随意调用//当方法的首字母为小写时,这个方法是Private,其他包是无法访问的。//结构体嵌套,实现“继承”..原创 2021-01-03 18:09:46 · 74 阅读 · 0 评论 -
GO-指针
package mainimport "fmt"//指针func f1(){ //&:取地址运算符 //*:取值运算符 name := "hello,world" p1 := &name p2 := new(string) *p2 = name var p3 *string p3 = &name fmt.Printf("%v, %T\n", name, name) fmt.Printf("%v, %T\n", p1, p1) fmt.Print原创 2021-01-03 17:45:14 · 123 阅读 · 0 评论 -
GO-数组、切片、字典
package mainimport "fmt"//数组func f1(){ //Go语言中数组是值类型,大小固定,数组之间的赋值是值拷贝,而不是地址的拷贝 //切片是引用类型,大小可变 var arr1 [3]int = [3]int{1,2,3} arr2 := [3]int{4,5,6} arr3 := [...]int{7,8,9} arr4 := [3]int{} arr5 := [...]int{} arr6 := [9]int{5:3} arr7 := [9]b原创 2021-01-03 17:19:51 · 222 阅读 · 1 评论 -
GO-基础变量类型
package mainimport( "fmt" "unsafe")//匿名变量:下划线"_",通常我们用匿名接收必须接收,但是又不会用到的值。//变量声明func f1(){ var v1 string = "v1" var v2 = "v2" v3 := "v3" //只能用于函数内部 v4, v5 := "v4", "v5" var ( v6 string = "v6" v7 string = "v7" ) //一般用于声明全局变量 fmt.Println(v原创 2020-12-27 19:23:08 · 146 阅读 · 0 评论