go语言之进阶篇同名字段】的更多相关文章

1.同名字段 示例: package main import "fmt" type Person struct { name string //名字 sex byte //性别, 字符类型 age int //年龄 } type Student struct { Person //只有类型,没有名字,匿名字段,继承了Person的成员 id int addr string name string //和Person同名了 } func main() { //声明(定义一个变量) var…
1.go语音之进阶篇 示例: package main import "fmt" type Humaner interface { //子集 sayhi() } type Personer interface { //超集 Humaner //匿名字段,继承了sayhi() sing(lrc string) } type Student struct { name string id int } //Student实现了sayhi() func (tmp *Student) sayhi…
1.结构体指针类型匿名字段 示例: package main import "fmt" type Person struct { name string //名字 sex byte //性别, 字符类型 age int //年龄 } type Student struct { *Person //指针类型 id int addr string } func main() { s1 := Student{&Person{"mike", 'm', 18}, 66…
1.非结构体匿名字段 示例 : package main import "fmt" type mystr string //自定义类型,给一个类型改名 type Person struct { name string //名字 sex byte //性别, 字符类型 age int //年龄 } type Student struct { Person //结构体匿名字段 int //基础类型的匿名字段 mystr } func main() { s := Student{Person…
1.方法的重写 示例: //Person类型,实现了一个方法 func (tmp *Person) PrintInfo() { fmt.Printf("name=%s, sex=%c, age=%d\n", tmp.name, tmp.sex, tmp.age) } //有个学生,继承Person字段,成员和方法都继承了 type Student struct { Person //匿名字段 id int addr string } //Student也实现了一个方法,这个方法和Per…
1.面向对象编程 对于面向对象编程的支持Go 语言设计得非常简洁而优雅.因为, Go语言并没有沿袭传统面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继承).虚函数.构造函数和析构函数.隐藏的this指针等. 尽管Go语言中没有封装.继承.多态这些概念,但同样通过别的方式实现这些特性: 封装:通过方法实现 继承:通过匿名字段实现 多态:通过接口实现 2.匿名组合和匿名字段初始化 示例: package main import "fmt"…
一.select作用 Go里面提供了一个关键字select,通过select可以监听channel上的数据流动. select的用法与switch语言非常类似,由select开始一个新的选择块,每个选择条件由case语句来描述. 与switch语句可以选择任何可使用相等比较的条件相比, select有比较多的限制,其中最大的一条限制就是每个case语句里必须是一个IO操作,大致的结构如下: select { case <-chan1: // 如果chan1成功读到数据,则进行该case处理语句…
1.goroutine是什么 goroutine是Go并行设计的核心.goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享.执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩.也正因为如此,可同时运行成千上万个并发任务.goroutine比thread更易用.更高效.更轻便. 2.创建goroutine协程 只需在函数调⽤语句前添加 go 关键字,…
1.并行和并发的概念 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行. 并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行. 2.并行和并发的区别 并发是两个队列交替使用一台咖啡机 并行是两个队列同时使用两台咖啡机 3.并发和并行原理图 图1 4.go语言并发优势 有人把Go比作21世纪的C语言,第一是因为Go语…
1.json解析到结构体 示例: package main import ( "encoding/json" "fmt" ) type IT struct { Company string `json:"company"` Subjects []string `json:"subjects"` //二次编码 IsOk bool `json:"isok"` Price float64 `json:"…