Go语言学习
文章平均质量分 79
Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
一只IT小小鸟
还有很多未完成的梦,怎能停下脚步,加油!
展开
-
Go语言--函数作为值-类型-返回值、匿名函数、闭包
概要地球人都知道:函数只是一段可执行代码,编译后就“固化”了,每个函数在内存中只有一份实例,得到函数的入口点便可以执行函数了。go语言中函数可以作为另一个函数的参数或返回值,可以赋给一个变量。函数可以嵌套定义(使用匿名函数),即在一个函数内部可以定义另一个函数,有了嵌套函数这种结构,便会产生闭包问题。闭包是一个函数值,他来自函数体外部的变量引用。下面分别介绍:Go中的函数、函数作为值与类型...原创 2018-08-21 11:08:08 · 3567 阅读 · 1 评论 -
Go语言--Nohup后台启动
linux的nohup命令用法在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。nohup命令格式;nohup /root/start.sh &在shell中回车后提示:[~]$ appending output to nohup.out原程序的的标准输出被自动改向到当前目录下的nohup.o...原创 2018-08-20 17:03:59 · 11286 阅读 · 0 评论 -
Go语言开发--select多路复用
golang 的 select 的功能与 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。示例:ch1 := make (chan int, 1)ch2 := make (chan int, 1)...select {case <-ch1: fmt.Println("ch1 pop one elem...原创 2018-07-31 21:12:21 · 1069 阅读 · 0 评论 -
Go语言开发--基本命令及使用
Go命令一般格式:go command [arg]其中,command是操作命令,arg是该命令的参数。常用命令Go的常用命令有:get、run、build、fmt、install、test等(1) go getgo get 命令主要是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code和Launchpad。这个命令在内部实际上分...原创 2018-07-31 20:55:20 · 537 阅读 · 0 评论 -
Go语言开发--Redis的使用
理论知识Redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。Redis 优势性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – ...原创 2018-07-30 17:59:57 · 2236 阅读 · 0 评论 -
Go语言基础--Printf格式化输出、Scanf格式化输入详解
几种输出方式的区别Print、Println 、Printf 、Sprintf 、Fprintf都是fmt 包中的公共方法,在需要打印信息时需要用到这些函数,那么这些函数有什么区别呢?Print: 输出到控制台(不接受任何格式化,它等价于对每一个操作数都应用 %v) fmt.Print(str)Println: 输出到控制台并换行 fmt.Pri...原创 2018-07-29 00:39:08 · 43082 阅读 · 3 评论 -
Go语言database/sql包--学习笔记
概述sql.DB不是一个连接,它是数据库的抽象接口。它可以根据driver打开关闭数据库连接,管理连接池。正在使用的连接被标记为繁忙,用完后回到连接池等待下次使用。所以,如果你没有把连接释放回连接池,会导致过多连接使系统资源耗尽。导入driver这里使用的是MySQL driversimport ( "database/sql" _ "github.com/go-...原创 2018-07-23 11:52:14 · 1692 阅读 · 0 评论 -
Go语言Web框架--Gin介绍和使用
所谓框架框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。曾经我以为Python世界里的框架已经够多了,后来发现相比golang简直小巫见大巫。golang提供的net/http库已经很好...原创 2018-07-23 11:05:11 · 23050 阅读 · 0 评论 -
Go语言Web服务--RPC编程
概要前面几篇博客我们介绍了如何基于Socket和HTTP来编写网络应用,通过学习我们了解了Socket和HTTP采用的是类似"信息交换"模式,即客户端发送一条信息到服务端,然后(一般来说)服务器端都会返回一定的信息以表示响应。客户端和服务端之间约定了交互信息的格式,以便双方都能够解析交互所产生的信息。但是很多独立的应用并没有采用这种模式,而是采用类似常规的函数调用的方式来完成想要的功能。R...原创 2018-07-22 22:05:51 · 1783 阅读 · 1 评论 -
Go语言Web服务--REST编程
背景RESTful,是目前最为流行的一种互联网软件架构。因为它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。本小节我们将来学习它到底是一种什么样的架构?以及在Go里面如何来实现它。什么是REST ?REST(REpresentational State Transfer)这个概念,首次出现是在 2000年Roy Thomas Fielding(他是HTTP规范的...原创 2018-07-22 21:46:01 · 1837 阅读 · 0 评论 -
Go语言Web服务--WebSocket编程
WebSocketWebSocket是HTML5的重要特性,它实现了基于浏览器的远程socket,它使浏览器和服务器可以进行全双工通信,许多浏览器(Firefox、Google Chrome和Safari)都已对此做了支持。在WebSocket出现之前,为了实现即时通信,采用的技术都是“轮询”,即在特定的时间间隔内,由浏览器对服务器发出HTTP Request,服务器在收到请求后,返回最...原创 2018-07-22 21:20:58 · 4626 阅读 · 2 评论 -
Go语言Web服务--Socket编程
Web服务Web服务可以让你在HTTP协议的基础上通过XML或者JSON来交换信息。如果你想知道上海的天气预报、中国石油的股价或者淘宝商家的一个商品信息,你可以编写一段简短的代码,通过抓取这些信息然后通过标准的接口开放出来,就如同你调用一个本地函数并返回一个值。Web服务背后的关键在于平台的无关性,你可以运行你的服务在Linux系统,可以与其他Window的asp.net程序交互,同样的,...原创 2018-07-22 20:59:33 · 2286 阅读 · 0 评论 -
Go语言Web基础--Go的http包详解
概要前面介绍了Go怎么样实现了Web工作模式的一个流程,这里,我们将详细地解剖一下http包,看它到底是怎样实现整个过程的。Go的http有两个核心功能:Conn、ServeMuxConn的goroutine与我们一般编写的http服务器不同, Go为了实现高并发和高性能, 使用了goroutines来处理Conn的读写事件, 这样每个请求都能保持独立,相互不会阻塞,可以高效的响应...原创 2018-07-22 20:13:37 · 6132 阅读 · 3 评论 -
Go语言Web基础--Go如何使得Web工作
Go搭建一个Web服务器前面小节已经介绍了Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作。http包建立Web服务器package mainimport ( "fmt" "net...原创 2018-07-22 19:34:27 · 11713 阅读 · 0 评论 -
Go语言Web基础--Web工作方式
背景学习基于Web的编程,通过Go来编写Web应用。Go目前已经拥有成熟的HTTP处理包,这使得编写能够做任何事清的动态web程序易如反掌。Web工作原理我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后,到底隐藏了些什么呢?对于普通的上网过程,系统其实是这样做的:浏览器本身是一个客户端,当你输入URL的时候,首...原创 2018-07-22 19:10:08 · 2341 阅读 · 0 评论 -
Go语言并发与并行--goroutine和channel和deadlock详解
概述进程,线程的概念在操作系统的书上已经有详细的介绍。进程是内存资源管理和cpu调度的执行单元。为了有效利用多核处理器的优势,将进程进一步细分,允许一个进程里存在多个线程,这多个线程还是共享同一片内存空间,但cpu调度的最小单元变成了线程。那协程又是什么东西,以及与线程的差异性?协程,可以看作是轻量级的线程。但与线程不同的是,线程的切换是由操作系统控制的,而协程的切换则是由用户控制的。最早支持协程...原创 2018-07-12 23:58:55 · 2306 阅读 · 0 评论 -
Go语言--函数与方法区别
概述接触到go之前,我认为函数和方法只是同一个东西的两个名字而已。但是在go中是两个不同的东西。官方解释:一个方法就是一个包含了接收者的函数。接收者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。区别:对于普通函数:接收者(函数参数)为值类型时,不能将指针类型的数据直接传递,反之亦然。func function_name( [parameter list]...原创 2018-07-13 10:27:54 · 3341 阅读 · 0 评论