
Go语言
博弈Dream
code and code
展开
-
Go语言类型系统——基本类型
一、用户定义的类型Go语言里声明用户定义的类型有两种方法。最常用的方法是使用关键字struct,它可以让用户创建一个结构类型。结构里每个字段都会用一个已知类型声明。这个已知类型可以是内置类型,也可以是其他用户定义的类型。1. 结构型类型//user 在程序里定义一个用户类型type user struct { name string email ...原创 2018-10-11 16:49:31 · 523 阅读 · 0 评论 -
go 语言中的定时器
在日常的开发过程中,我们免不了与定时器打交道。通常需要定时执行某个程序,可能是每隔一段时间执行一次,也可能是固定的每天在某一个时间点执行一次。总之,定时器的使用是非常频繁的,下面将介绍几种常用定时器。1. 假设每隔三秒,我们打印一段信息,可以采用如下方式。我们将要执行的程序放在一个go协程中去执行。package mainimport ( "fmt" "time...原创 2019-02-25 23:10:10 · 4749 阅读 · 0 评论 -
Go语言常用字符串操作
1. 去除字符串中多余空白字符package mainimport ( "fmt" "strings")//利用正则表达式压缩字符串,去除空格或制表符func compressStr(str string) string { if str == "" { return "" } //匹配一个或多个空白符的正则表达式 reg ...原创 2018-11-29 14:04:19 · 412 阅读 · 0 评论 -
go语言解析json字符串
go语言解析json数据主要使用go语言自带的json转换库encoding/json1. json.Marshal函数该函数的作用是主要对象转换为JSON字符串数据,函数原型如下:func Marsha (v interface{})([]byte, error)也就是说,这个函数接收任意类型的数据v,并将其转换为字节数组类型,返回值就是我们想要的json数据和一个错误代码。...原创 2018-11-29 13:56:33 · 2842 阅读 · 0 评论 -
Go语言并发模型——竞争状态
如果两个或者多个goroutine在没有互相同步的情况下,访问某个共享的资源,并试图同时读和写这个资源,就处于相互竞争的状态,这种情况被称作竞争状态。对一个共享资源的读和写操作必须是原子化的,换句话说,同一时刻只能有一个goroutine对共享资源进行读和写操作。下面这一个程序将会出现竞争状态:package mainimport ( "fmt" "run...原创 2018-10-16 14:17:47 · 408 阅读 · 0 评论 -
Go语言数组、切片和映射
G语言有3种数据结构可以让用户管理集合数据:数组、切片和映射。一、数组 在Go语言里,数组是一个长度固定的数据类型,用于存储一段具有相同类型的元素的连续块。数组存储的类型可以使内置类型,如整型或者字符串,也可以是某种结构类型。1. 声明和初始化声明数组时需要指定内部存储的数据的类型,以及需要存储的元素的数量,这个数量也称为数组的长度。1)声明一个数组,并设置为0值var...原创 2018-10-08 22:09:10 · 401 阅读 · 0 评论 -
Go语言并发模型——goroutine
Go语言里的并发指的是能让某个函数独立于其他函数运行的能力。当一个函数创建为goroutine时,Go会将其视为一个独立的工作单元。这个单元会被调度到可用的逻辑处理器上执行。Go语言运行时的调度器是一个复杂的软件,能管理被创建的所有goroutine并为其分配执行时间。这个调度器在操作系统之上,将操作系统的线程与语言运行时的逻辑处理器绑定,并在逻辑处理器上运行goroutine。调度...原创 2018-10-15 09:01:54 · 657 阅读 · 0 评论 -
Go语言并发模型——通道
原子函数和互斥锁都能工作,但是依靠它们都不会让编写并发程序变得更简单,更不容易出错,或者更有趣。在Go语言里,你不仅可以使用原子函数和互斥锁来保证对共享资源的安全访问以及消除竞争状态,还可以使用通道,通过发送和接收需要共享的资源,在goroutine之间做同步。 当一个资源需要在goroutine之间共享时,通道在goroutine之间架起了一个管道,并提供了确保同步交...原创 2018-10-18 09:17:49 · 584 阅读 · 0 评论 -
Go语言类型系统——接口与嵌入类型
多态是指代码可以根据类型的具体实现采取不同行为的能力。如果一个类型实现了某个接口,所有使用这个接口的地方,都可以支持这种类型的值。例如标准库里io包里实现的流式处理接口。io包提供了一组构造的非常好的接口和函数,来让代码轻松支持流式数据处理。只要实现两个接口,就能利用整个io包背后的所有强大能力。下面是一个示例程序package mainimport ( "fmt...原创 2018-10-13 08:50:35 · 503 阅读 · 0 评论 -
go语言exec包的使用
有时候我们的go程序需要执行外部的命令,比如执行linux shell命令,一个其他语言(比如C语言)编写的二进制文件,我们都可以通过调用go语言exec包的函数来执行。下面将介绍exec包的一些简单使用例子。1. exec.Command执行命令 假设我们要执行调用linux的ping命令,求的5次ping的平均值,可以采用如下方式:package main...原创 2019-03-10 17:19:11 · 6035 阅读 · 0 评论