Golang入门教程——基本操作篇

今天是Golang专题的第四篇,这一篇文章将会介绍golang当中的函数、循环以及选择判断的具体用法。函数在之前的文章当中其实我们已经接触过函数了,因为我们写的main函数本质上也是一个函数。只不过由于main函数没有返回值,也没有传参,所以省略了很多信息。func main() { fmt.Println("Hello World")}下面,我们来看看一个完整的函数是怎样的,这是golang官网上的例子。func add(x int, y int) int { return x + y}这是一...阅读全文

51CTO博客 2020-12-04 21:53:57 Techflow1

Golang——为了防止程序员打架操碎了心

今天是Golang专题的第二篇,我们来看看Go的语言规范。在我们继续今天的内容之前,先来回答一个问题。有同学在后台问我,为什么说Golang更适合分布式系统的开发?它和Java相比有什么优势吗?其实回答这个问题需要涉及很多概念,比如操作系统当中关于进程、线程、协程等很多概念。我们将这些内容进行简化,举一个最简单的线程的例子。我们来写一段在java当中实现多线程的例子:public class MyThread implemnts Runnable { public void run() { Sy...阅读全文

51CTO博客 2020-12-04 22:03:17 Techflow1

Go语言 | CSP并发模型与Goroutine的基本使用

今天是golang专题的第13篇文章,我们一起来聊聊golang当中的并发与Goroutine。在之前的文章当中我们介绍完了golang当中常用的使用方法和规范,在接下来的文章当中和大家聊聊golang的核心竞争力之一,并发模型与Goroutine。我们都知道并发是提升资源利用率最基础的手段,尤其是当今大数据时代,流量对于一家互联网企业的重要性不言而喻。串流显然是不行的,尤其是对于web后端这种流量的直接载体。并发是一定的,问题在于怎么执行并发。常见的并发方式有三种,分别是多进程、多线程和协程。...阅读全文

51CTO博客 2020-12-04 19:52:22 Techflow1

golang——为什么有的语言要把变量类型写在后面?

今天是Golang的第三篇,我们一起来看看Golang当中的变量。变量声明Golang当中的变量类型和C/C++比较接近,一般用的比较多的也就是int,float和字符串。Golang当中不一样的地方主要有几点,第一点是严格区分了int,int16,int32和int64,同样区分了float,float32和float64。前文当中说过,Golang是不支持隐式转换的,哪怕是int和int32也一样。var v1 intvar v2 int32 = 10v1 = v2上面的代码是会报错的,因为...阅读全文

51CTO博客 2020-12-04 21:59:58 Techflow1

【go系列5】golang中的通道

golang中的通道类型是一种特殊的类型, 类型名字为chan。在任何时候,同时只有一个goroutine访问通道进行并发和获取数据,goroutine间通过通道就可以进行通信。我们可以通过go关键字创建goroutine。 通道本身是同步的,通道的发送和接受数据默认是同步的,且遵循先进先出的规则以保证数据发送的顺序。通道分为双向通道和单向通道。双向通道:chan1 := make(chan int, 10)单向通道:#单向只写通道,10 表示通道的容量 chan2 := make(chan <...阅读全文

Segmentfault 2020-12-08 09:32:33 鸿乃江边鸟

GO ENV 的一些参数

背景在家写代码发现公司的代码down不下来,原因是go get获取代码时,公司里的代码也去go proxy里去获取,这当然获取不到啦。GOPROXYgo 代理的地址,go get会通过这里获取代码,默认值proxy.golang.org在中国不能访问。所以一般设为国内可用的地址:七牛云 https://goproxy.cn/阿里云 https://mirrors.aliyun.com/go...GONOPROXY这里用于配置不走goproxy的代码地址,公司内部代码在proxy里肯定是获取不到的...阅读全文

Segmentfault 2020-12-08 09:32:32 Hello

北京泰能诚邀Golang技术成员

您好, 坐标北京海淀区,我们是做酒店管理系统的,主要模块包含前台,餐饮,客票等。 现在主要欠缺系统的后台(需Golang技术)完善工作,前端公司flutter自己完成。 任职需求: 1、Golang技术 基础扎实,对原理有较深入的研究; 2、有对 Golang应用性能优化的经验; 3、有 Golang 上线的实际案例者为佳。 我们希望找到更多志同道合的 Golang技术成员加入我们,一起打造一款好用的产品。 全职和兼职都可以考虑。 如果有意愿,请您给我发邮件:n...阅读全文

Go语言中文网 2020-12-05 14:20:43 bjtn123

VS Code 安装与配置Golang语言环境

之前用惯了Goland IDE,很好用,没有资金压力的可以考虑,或者继续...网上找方法,我是腻了重装找破解的,就转到了VS Code,发现其实现在VS Code对Golang的支持已经很不错了,就是自动补全和自动导包,有时候会卡下,当然研究这玩意怎么装也是很头疼,这里记下笔记。一、下载安装 VS Code1>下载VS Code下载地址:https://code.visualstudio.com/Download有User版和System版,具体两个版本是什么区别,我也不大清楚,只知道User版...阅读全文

简书 2020-12-05 13:32:39 GameLift

异构模块进程间通信之 AF_INTE VS AF_UNIX

简介 AF_INET / AF_UNIX 进程间通信在不强调性能的情况下是一个很简单的问题, 通常会选用 RPC(AF_INET) 来实现,其通信原理大致如下: AF_INET 可以看到每个数据包都会经过 TCP/IP 协议栈,性能损耗主要在此, 在不改变接口的情况下使用 IPC(AF_UNIX) 来实现进程间通信效率会有很大提升, 如下图所示 AF_UNIX 直接通过内核缓冲区copy数据,省去了TCP/IP协议栈的工作 AF_UNIX 内核为两种方式提供了相同的接口: socket / bi...阅读全文

简书 2020-12-05 13:32:37 cc14514

Go语言基础(2)

Go语言基础(2) Go语言中支持函数、匿名函数和闭包 Go语言中定义函数 定义函数使用func关键字,语法如下: func 函数名(参数)(返回值){ 函数体 } 说明: ​ 1) 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。 ​ 2) 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔。 ​ 3) 返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用,分隔。...阅读全文

51CTO博客 2020-12-04 19:04:43 Meteor_hy

GO的第三天学习-接口约定

一个具体的类型可以准确的描述它所代表的值,并且展示出对类型本身的一些操作方式:就像数字类型的算术操作,切片类型的取下标、添加元素和范围获取操作。具体的类型还可以通过它的内置方法提供额外的行为操作。总的来说,当你拿到一个具体的类型时你就知道它的本身时什么和你可以用它来做什么?在GO语言中还存在着另外一种类型:接口类型。接口类型是一种抽象的类型。它不会暴露出它所代表的对象的内部值的结构和这个对象支持的基础操作集合他们只会表现出它们自己的方法。也就是说当你看到一个接口类型的值时,你不知道他是什么,唯一...阅读全文

Segmentfault 2020-12-08 08:32:33 Gabriel

Golang入门教程——面向对象篇

今天是golang专题的第9篇文章,我们一起来看看golang当中的面向对象的部分。在现在高级语言当中,面向对象几乎是不可或缺也是一门语言最重要的部分之一。golang作为一门刚刚诞生十年的新兴语言自然是支持面向对象的,但是golang当中面向对象的概念和特性与我们之前熟悉的大部分语言都不尽相同。比如Java、Python等,相比之下, golang这个部分的设计非常得简洁和优雅(仁者见仁),所以即使你之前没有系统地了解过面向对象,也没有关系,也一定能够看懂。常见的面向对象的部分,比如继承、构造...阅读全文

51CTO博客 2020-12-04 20:31:42 Techflow1

Golang中的interface是干嘛的?从面向对象中的多态与接口开始说起……

今天是golang专题的第11篇文章,我们一起来聊聊golang当中多态的这个话题。如果大家系统的学过C++、Java等语言以及面向对象的话,相信应该对多态不会陌生。多态是面向对象范畴当中经常使用并且非常好用的一个功能,如果你之前没有学过的话也没有关系,我们用一个简单的例子来说明一下。多态主要是用在强类型语言当中,像是Python这样的弱类型语言,变量的类型可以随意变化,也没有任何限制,其实区别不是很大。多态的含义对于Java或者是C++而言,我们在使用变量的时候,变量的类型是明确的。但是如果我...阅读全文

51CTO博客 2020-12-04 20:04:18 Techflow1

Golang | 简介channel常见用法,完成goroutin通信

今天是golang专题的第14篇文章,大家可以点击上方的专辑回顾之前的内容。今天我们来看看golang当中另一个很重要的概念——信道。我们之前介绍goroutine的时候曾经提过一个问题,当我们启动了多个goroutine之后,我们怎么样让goroutine之间保持通信呢?要回答这个问题就需要用到信道。channel信道的英文是channel,在golang当中的关键字是chan。它的用途是用来在goroutine之间传输数据,这里你可能要问了,为什么一定得是goroutine之间传输数据呢,函...阅读全文

51CTO博客 2020-12-04 19:43:52 Techflow1

手把手golang基础教程——数组与切片

今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用。数组与切片golang当中数组和C++中的定义类似,除了变量类型写在后面。比如我们要声明一个长度为10的int型的数组,会写成这样:var a [10]int数组的长度定义了之后不能改变,这点和C++以及Java是一样的。但是在我们日常使用的过程当中,除非我们非常确定数组长度不会发生变化,否则我们一般不会使用数组,而是使用切片(slice)。切片有些像是数组的引用,它的大小可以是动态的,因此更加灵活。所以在我们日...阅读全文

51CTO博客 2020-12-04 21:46:07 Techflow1

人人都能懂的go语言教程——字符串篇

今天是golang专题的第6篇文章,这篇主要和大家聊聊golang当中的字符串的使用。字符串定义golang当中的字符串本质是只读的字符型数组,和C语言当中的char[]类似,但是golang为它封装了一个变量类型,叫做string。知道了string这个类型之后,我们就可以很方便地来初始化:var str stringstr1 := "hello world"var str2 = "hello world too"这里应该没什么难度,很好理解。由于这个数组是只读的,所以我们可以通过下标获取某一...阅读全文

51CTO博客 2020-12-04 21:42:49 Techflow1