![](https://img-blog.csdnimg.cn/2020121215102337.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
GOGOGO
GO组队学习
YueLinbo
生命的蕴涵 靠时间积累
展开
-
Go_并发编程
1 并发编程1.1 并发与并行并发:单位时间内,程序可以处理的能力。并行:同一时刻,程序可以处理的能力。1.2 为什么需要并发不阻塞等待其他任务的执行,节省cpu时间,提高系统新能。并行可以使系统变得简单,将复杂的大任务切成许多小任务,单独测试在开发中,经常会遇到为什么某些进程通常会相互等待呢?为什么有些运行慢,有些快呢?通常受限来源于进程I/O或CPU。进程I/O限制如:等待网络或磁盘访问CPU限制如:大量计算1.3 Go的并发原语1.3.1 协程Goroutines每个原创 2020-12-26 19:02:20 · 130 阅读 · 0 评论 -
Go_单元测试
单元测试在go 标准库中有一个testing的测试框架,可以进行单元测试,命令是go test xxx测试文件通常以 xxx_test.go 命名,放在同一包下。单元测试要点单元测试时log信息打印不出来,需要使用 go test xxx_test.go -v单测覆盖率 go test xxx_test.go -v -cover表格驱动型测试tests := []struct { name string args args want *Complex}{ // TODO: A原创 2020-12-25 10:13:59 · 155 阅读 · 0 评论 -
Go_反射
反射反射:主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。go语言提供了一种在运行时更新变量和检查它们的值、调用它们的方法,但是在编译时并不知道这些变量的具体类型,这称为反射机制。1.反射作用1.1 在编写不定传参类型函数的时候,或传入类型过多时需要反射type User struct { gorm.Model Name string Age sql.NullInt64 Birthday *time.Time Email原创 2020-12-24 10:35:30 · 144 阅读 · 0 评论 -
Go_异常处理
errorerror 是go语言内置的错误接口 type error interface { Error() string }//构造error对象err := errors.New("this is an error")err := fmt.Errorf("this is an error")//自定义错误接口type NotNature float64func (err NotNature) Error() string{ return fmt.Sprintf("自然数为原创 2020-12-23 09:39:04 · 106 阅读 · 0 评论 -
Go_包管理
包管理Go Modulesgo语言通过包管理来封装和复用代码,比较常用的有官方提供的Go Modules。Modules 是相关Go包的集合,是源代码交换和版本控制的单元,go命令支持直接使用ModulesGo Modules的使用方法 //ch go env #set GO111MODULE=on #set GOARCH=amd64 #set GOBIN= #set GOPROXY=https://goproxy.cn,direct #set GOROOT=C:\Go #set G原创 2020-12-22 09:59:42 · 448 阅读 · 0 评论 -
Go_结构体、方法、接口
1. 结构体1.1 定义结构体Go语言中没有类的概念,也不支持继承。go中可用结构体来封转多数据类型数据,据说Go语言中结构体的组合方式更具有扩展性和灵活性type identifier struct{ field1 type1 field2 type2 ...}type Person struct{ Name string Age int}//结构体中字段的类型可以是任何类型,包括函数类型,接口类型,甚至结构体类型本身type ListNode struct{ Val in原创 2020-12-21 11:59:56 · 204 阅读 · 0 评论 -
Go_函数
1.函数1.1 函数定义func functionName([paramenter list]) [returnTypes]{ //body}func 函数声明的关键字functionName 函数名称paramenter list 函数参数,非必须returnTypes 函数返回参数,非必须func GetSum(num1 int, num2 int)int{//也可以这样定义 函数参数相同类型可以省略掉前面的类型声明//func GetSum(num1, num2 int)i原创 2020-12-20 17:43:41 · 125 阅读 · 1 评论 -
Go_数组、切片
1. 数组1.1 如何定义数组同java数组一样,数组是一组内存连续且类型相同的数据组成//不初始化初始值默认为0var arr1 = [5]int{}var arr2 = [5]int{1,2,3,4,5}//声明数组下标3的值为10var arr3 := [3:10]arr4 := []int{1,2,3,4,5}//操作数据for i := 0; i < len(arr1); i++ { arr1[i] = i * 10 }for index, value := r原创 2020-12-19 20:48:18 · 102 阅读 · 1 评论 -
Go_字典、字符串
1. 字典同java中的map,key-value键值对数据结构。####1.1 初始化map hash := map[string]int{"key1":1,"key2":2}2.字符串原创 2020-12-18 15:47:56 · 358 阅读 · 0 评论 -
Go_运算符、控制语句
1.运算符算数运算符:加减乘除、%取余、++自增 、–自减关系运算符: ==、!=、>、 < 、>=、 <=逻辑运算符: && 、||、 !位运算符: & 、| 、^ 、<<、 >>赋值运算符:运算符描述=简单的赋值运算符,将一个表达式的值赋给一个左值+=相加后再赋值-=相减后再赋值*=相乘后再赋值/=相除后再赋值%=求余后再赋值<<=左移后原创 2020-12-17 14:33:16 · 85 阅读 · 0 评论 -
Go_变量、常量、枚举
1.变量go的变量明可以由字母、数字、下划线组成,其中不能以数字开头,声明变量的语法一般为:var identifier typevar identifier1, identifier2 type//也可以省略var,左侧必须生命新的变量,只能被用在函数体内identifier := typea := 50//指定的变量类型,若没有初始化,数值类型默认零值,bool类型默认false,字符串默认"",errr默认nilvar a []int/var map[string] int.原创 2020-12-16 08:42:32 · 135 阅读 · 0 评论 -
Go_数据类型、关键字、标识符
基本概念1. 变量:只能以字母或下划线_开头2. 内置基本类型:基本数据类型byte、int(有符号- +)、int8、int16、int32、int64、uint(无符号)、uint8、uint32、uint64、 uintprt(无符号整型,存放指针)、float32、float64、complex64、complex128(复数)、String、error、bool派生类型:指针类型(Pointer)数组类型结构化类型(struct)Channel 类型函数类型切片类型接原创 2020-12-15 08:58:50 · 111 阅读 · 0 评论 -
Go_go语言初探
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。1.写一个简单的hello.gopackage mainimport "fmt"func main(){ //输出hello world fmt.Println("hello,world!")}同java语法相比go显得非常简洁原创 2020-12-14 11:45:39 · 193 阅读 · 0 评论