GO语言
诺卡先生
成功在于你坚持了,别人坚持不了的东西
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go语言学习:并发编程(Sync/GMP/爬虫案例)
一、Sync1.1.1. sync.WaitGroup在代码中生硬的使用time.Sleep肯定是不合适的,Go语言中可以使用sync.WaitGroup来实现并发任务的同步。 sync.WaitGroup有以下几个方法:方法名 功能 (wg * WaitGroup) Add(delta int) 计数器+delta (wg *WaitGroup) Done() 计数器-1 (wg *WaitGroup) Wait() 阻塞直到计数器变为0 sync.W.原创 2020-07-05 09:12:12 · 400 阅读 · 0 评论 -
go语言学习:并发编程(定时器/select/并发安全锁)
一、 定时器1.1.1. 定时器Timer:时间到了,执行只执行1次package mainimport ( "fmt" "time")func main() { // 1.timer基本使用 //timer1 := time.NewTimer(2 * time.Second) //t1 := time.Now() //fmt.Printf("t1:%v\n", t1) //t2 := <-timer1.C //fm原创 2020-07-02 09:46:40 · 554 阅读 · 0 评论 -
go语言学习:并发编程(runtime包\Channel\Goroutine池)
runtime包1.1.1. runtime.Gosched()让出CPU时间片,重新等待安排任务(大概意思就是本来计划的好好的周末出去烧烤,但是你妈让你去相亲,两种情况第一就是你相亲速度非常快,见面就黄不耽误你继续烧烤,第二种情况就是你相亲速度特别慢,见面就是你侬我侬的,耽误了烧烤,但是还馋就是耽误了烧烤你还得去烧烤)package mainimport ( "fmt" "runtime")func main() { go func(s string) {原创 2020-06-26 21:53:41 · 502 阅读 · 1 评论 -
go语言学习:并发编程(介绍)
1. 并发介绍进程和线程A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行。并发和并行A. 多线程程序在一个核的cpu上运行,就是并发。B. 多线程程序在多个核的cpu上运行,就是并行。并发并行协程和线程协程:独立的栈空间,共享堆空间,调度由用户自己控原创 2020-06-25 20:50:07 · 254 阅读 · 0 评论 -
go语言学习:网络编程
一. 互联网协议介绍互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite),正是这一些协议规定了电脑如何连接和组网。我们理解了这些协议,就理解了互联网的原理。由于这些协议太过庞大和复杂,没有办法在这里一概而全,只能介绍一下我们日常开发中接触较多的几个协议。1.1.1. 互联网分层模型互联网的逻辑实现被分为好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。用户接触到的只是最上面的那一层,根本不会感觉到下面的几层。要理解互联网就需要自下而上理解每原创 2020-06-17 17:23:01 · 649 阅读 · 2 评论 -
go语言学习:面向对象(匿名字段)
一、匿名字段go支持只提供类型而不写字段名的方式,也就是匿名字段,也称为嵌入字段package mainimport "fmt"// go支持只提供类型而不写字段名的方式,也就是匿名字段,也称为嵌入字段//人type Person struct { name string sex string age int}type Studen...原创 2020-04-19 20:23:35 · 594 阅读 · 0 评论 -
go语言学习:方法
一、方法定义Golang 方法总是绑定对象实例,并隐式将实例作为第一实参 (receiver)。• 只能为当前包内命名类型定义方法。• 参数 receiver 可任意命名。如方法中未曾使用 ,可省略参数名。• 参数 receiver 类型可以是 T 或 *T。基类型 T 不能是接口或指针。 • 不支持方法重载,receiver 只是参数签名的组成部分。• 可用实例 valu...原创 2020-04-15 15:54:13 · 452 阅读 · 1 评论 -
go语言学习:指针
指针区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。1.1. Go语言中的指针Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。传递数据使用指针,而无须拷贝数据。类型指针不能进行偏移和运算。Go语言中的指针操作非常简单,只需要记住...原创 2020-04-07 21:04:52 · 242 阅读 · 0 评论 -
go语言:数组Array
数组ArrayGolang Array和以往认知的数组有很大不同。 1. 数组:是同一种数据类型的固定长度的序列。 2. 数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。一旦定义,长度不能变。 3. 长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型。 ...原创 2020-04-07 20:59:46 · 590 阅读 · 0 评论 -
go语言:Map
Mapmap是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。1.1.1. map定义Go语言中 map的定义语法如下 map[KeyType]ValueType其中, KeyType:表示键的类型。 ValueType:表示键对应的值的类型。map类型的变量默认初始值为nil,需要使用make...原创 2020-04-07 20:57:11 · 154 阅读 · 0 评论 -
go语言学习:结构体
结构体Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。1.1. 类型别名和自定义类型1.1.1. 自定义类型在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。自定义类型是定义了一个全新的类型。我们可以基于内置的...原创 2020-04-07 20:55:10 · 330 阅读 · 0 评论 -
go语言:函数
一、Go语言函数声明普通函数声明(定义)函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。func 函数名(形式参数列表)(返回值列表){ 函数体}形式参数列表描述了函数的参数名以及参数类型,这些参数作为局部变量,其值由参数调用者提供,返回值列表描述了函数返回值的变量名以及类型,如果函数返回一个无名变量或者没有返回值,返回值列表的括号是可以省略的。如果一个函数...原创 2020-03-31 13:02:39 · 643 阅读 · 0 评论 -
go语言:流程控制
一、Go语言if else(分支结构)在Go语言中,关键字 if 是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号{}括起来的代码块,否则就忽略该代码块继续执行后续的代码。if condition { // do something}如果存在第二个分支,则可以在上面代码的基础上添加 else 关键字以及另一代码块,这个代码块中的代码只有在条件...原创 2020-03-23 09:43:45 · 301 阅读 · 0 评论 -
go语言学习:容器
一、Go语言数组数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。和数组对应的类型是 Slice(切片),Slice 是可以增长和收缩的动态序列,功能也更灵活,但是想要理解 slice 工作原理的话需要先理解数组,所以本节主要为大家讲解数组的使用,至于 Slice(切片)将在《Go语言切片》一节中为大家讲解...原创 2020-03-08 09:53:19 · 332 阅读 · 0 评论 -
go语言:go语言的基本语法(3)
一、Go语言变量的生命周期变量的生命周期指的是在程序运行期间变量有效存在的时间间隔。变量的生命周期与变量的作用域有着不可分割的联系:全局变量:它的生命周期和整个程序的运行周期是一致的;局部变量:它的生命周期则是动态的,从创建这个变量的声明语句开始,到这个变量不再被引用为止;形式参数和函数返回值:它们都属于局部变量,在函数被调用的时候创建,函数调用结束后被销毁。for t := 0....原创 2020-02-28 17:23:58 · 765 阅读 · 0 评论 -
go语言:go语言的基本语法(2)
一、Go语言输出正弦函数(Sin)图像在Go语言中,正弦函数由 math 包提供,函数入口为 math.Sin,正弦函数的参数为 float64,返回值也是 float64。在使用正弦函数时,根据实际精度可以进行转换。Go语言的标准库支持对图片像素进行访问,并且支持输出各种图片格式,如 JPEG、PNG、GIF 等。首先给出本节完整的代码:package mainimport ( ...原创 2020-02-27 11:19:51 · 1214 阅读 · 0 评论 -
go语言:go语言的基本语法
一、Go语言变量的声明(使用var关键字)Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看,变量是一段或多段用来存储数据的内存。声明变量的一般形式是使用 var 关键字:var name type其中,var 是声明变量的关键字,name 是变量名,type 是变量...原创 2020-02-26 19:01:31 · 667 阅读 · 0 评论 -
go语言学习:语言简介
一、Go语言简介Go语言(或 Golang) 起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go语言的用途众多,可以进行网络编程...原创 2020-04-10 14:53:31 · 2674 阅读 · 0 评论
分享