
Golang学习总结
此专栏为本人初学Go语言时的总结,适合初学入门
东园桃与李
这个作者很懒,什么都没留下…
展开
-
十五. Go学习:goroute和cahnnel
进程和线程进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。线程是进程的一个执行实体,是cpu调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行。并发和并行多线程程序在一个核的CPU上运行,就是并发。多线程程序在多个核的CPU上运行,就是并行。协程和线程协程:独立的栈空间,共享堆空间,调度由用户自己控制,本质上有点类似于用户级线程,这些用户级线程的调度也是自己实现的。原创 2020-12-27 22:03:27 · 236 阅读 · 0 评论 -
十四. Go学习:锁机制
线程同步时,可能会有多个线程需要使用这个资源,为了避免资源竞争,我们需要锁机制。1. import("sync")2. 互斥锁,var mu sync.Mutex2. 读写所, var mu sync.RWMutex互斥锁package mainimport ( "fmt" "math/rand" "sync" "sync/atomic" "time")var lock sync.Mutexfunc testMap() { var a map[int]int原创 2020-12-26 17:38:59 · 415 阅读 · 0 评论 -
十三. Go学习:Json协议
Json用途Json数据协议1. 导入包:import "encoding/json"2. 序列化:json.Marshal(data interface{})3. 反序列化:json.UnMarshal(data []byte,v intface{})代码范例package mainimport ( "encoding/json" "fmt")type User struct { UserName string NickName string Age原创 2020-12-24 17:29:38 · 215 阅读 · 1 评论 -
十一. Go学习:反射详解
目录反射概念:动态获取interface{}的值、类型动态的改变interface()值反射操作结构体反射概念:可以动态获取变量的相关信息 import "reflect"两个函数:a. reflect.TypeOf,获取变量的类型,返回reflect.Type类型 b. reflect.ValueOf,获取变量的值,返回reflect.Value类型 c. reflect.Value.King,...原创 2020-12-23 17:08:45 · 110 阅读 · 0 评论 -
十. Go学习:接口详解
接口概念Go语言提供了接口(interface)这类数据类型,其把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。Interface可以定义一组方法,而这些方法在interface(){}里是不需要实现的,且其中不能包含任何变量。在Go中的接口我们在外部实现时,只需一个变量含有接口类型中的所有方法,那么这个变量就实现了这个接口。与此同时,如果一个变量同时含有了多个interface类型的方法,那么这个变量就实现了多个接口。需要我们注意的是,如果一个变量只含有一个原创 2020-12-23 14:11:26 · 190 阅读 · 0 评论 -
九. Go学习:Go中的继承
从下面的两段代码中可以非常直观的看出,Go中的继承跟C++相比较而言是非常方便的单重继承package mainimport "fmt"//---------------单重继承----------------type Car struct { weight int name string}func (p *Car) Run() { fmt.Println("running")}type Bike struct { Car lunzi int}func main()原创 2020-12-23 00:35:04 · 169 阅读 · 0 评论 -
八. Go学习:结构体的工厂模式、tag的使用、匿名字段和方法
本文总结了结构体的工厂模式、tag的使用、匿名字段和方法目录struct的工厂模式struct中tag的使用匿名字段方法struct的工厂模式Go中的struct无构造函数,我们可通过工厂模式初始化package mainimport "fmt"//工厂模式,Go中无结构体,我们用工厂模式代替type student struct { Name string Age int}func NewStudent(name string, age int) *s原创 2020-12-23 00:27:28 · 299 阅读 · 1 评论 -
七. Go学习:排序、结构体、链表和二叉树
本文介绍了结构体这一自定义数据类型,以及排序(冒泡、简单选择、插入和快爬)、链表和二叉树这三种简单的数据结构(通过代码)目录排序一. 冒泡排序二. 简单选择排序三. 插入排序四. 快速排序结构体链表二叉树排序一. 冒泡排序冒泡排序:从小往上两两比较相邻记录的关键字,反序则交换,直至有序。最小数像泡泡一样从小往上走.package mainimport ( "fmt")func sortBuble(a []int) { for i := 0;原创 2020-12-22 22:12:54 · 186 阅读 · 0 评论 -
六. Go学习:map数据结构
目录map一. map简介二. map相关操作三. map为引用类型四. Map的遍历五. map排序六. slice of mapmap一. map简介key-value的数据结构,又叫字典或关联数组。声明:var map1 map[keytype]valuetype—如:var a map[string]string;var a map[string]int;var a map[int]string;var a map[string]map[string]st原创 2020-12-22 20:23:11 · 181 阅读 · 0 评论 -
五. Go学习-数组、切片与排序查找
本文总结了Go中数组和切片的各自特点以及区别。目录数组一.数组的特性二. 数组的初始化切片一. 切片特性二. 切片的数据结构三. 切片的make创建、apeend操作、拷贝及扩容前后变化数组一.数组的特性1)数组:是同一数据类型的固定长度的序列2)定义:var a [len] int,一旦定义,长度不能改变。因为长度也是数组类型的一部分,var a[5]int 和var a[10] int是不同的类型。3)数组可以通过下标访问,下标从0开始,最...原创 2020-12-22 17:12:44 · 580 阅读 · 0 评论 -
四. Go学习-make和new的区别
new和make的区别,我们从下图便可看出: 1)new是为值类型分配内存(可以任意类型的数据),其返回的是指针,指向分配类型的内存地址。 2)make为引用类型分配内存并初始化,如:chan、map和slice,其返回值为这个类型(引用)本身。 3)new 分配的空间被清零。make 分配空间后,会进行初始化; ...原创 2020-12-22 15:08:21 · 1282 阅读 · 0 评论 -
三. Go基础:常量和变量、值类型和引用类型、变量的作用域、单引双引反引和字符串的翻转截断
目录2.1 常量和变量2.2 值类型和引用类型2.3 变量的作用域2.4 单引双引反引2.5 字符串的翻转截断在本篇中,总结了常量和变量、值类型和引用类型、变量的作用域、单引双引反引和字符串和翻转截断这些基础概念和操作2.1 常量和变量 2.1.1 常量 常量只能用const修饰,表示仅只读而不能修改,其可修饰类型包括:bool类型、number (int、float、complex)和string,其语法为const identifier [ty...原创 2020-12-22 10:41:41 · 228 阅读 · 0 评论 -
二. Go中自建包的调用
Go中自建包的调用 1. 在GOPATH路径src文件夹下建文件go_dev/day1/package_example/calc夹,然后在calc文件夹下建两个go文件Sub.go和Sum.go并分别写数值相减和相加的函数,代码如下所示。 这儿需要注意的是,package main应改为package+文件名。package calcfunc Sub(a int, b int) int { return a - b}package calcfunc Sum...原创 2020-12-21 20:02:56 · 563 阅读 · 0 评论 -
一.Go语言特性(结合代码)
Go语言特性目录Go语言特性1.1 垃圾回收1.2 天然并发1.3 Channel1.4多值返回 Go语言有垃圾回收、天然并发、channel和支持多值返回这四个独特的特性。1.1 垃圾回收 在垃圾回收上,Go内存可自动释放,无需开发人员管理内存,new()分配的内存会自动释放。 如在链表的操作中,我们删除链表中的某个节点时,无需像C++需要用delete()删除,Go会自动释放不会产生内存泄漏。如删除student链表里的s...原创 2020-12-21 19:23:10 · 436 阅读 · 0 评论 -
Go-从环境配置到第一个go程序(windows)
一.Go安装下载 GO的安装环境配置可参考这篇博文:https://www.cnblogs.com/zsy/p/5215336.html 只需注意如下:博文中提供的官方网址需翻墙,可上https://golang.google.cn/dl/下载二. 编译环境VScode 参考这篇博文:https://www.cnblogs.com/zsy/p/5223957.html 此步骤注意这点:设置GOPATH环境变量,后面vscod...原创 2020-12-21 15:36:42 · 132 阅读 · 0 评论