go语言

GoCenter助力Golang全速前进

≡放荡痞女 提交于 2020-01-13 19:09:41
一、背景 Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。为了方便搜索和识别,有时会将其称为Golang。自2009年11月Google正式宣布推出,成为开放源代码项目以来,Go语言已成为当今开发人员和DevOps领域最流行的语言之一, 它被用于设计和编写Kubernetes和Helm。但是,相比语言本身已经得到了广泛的普及和使用,Go语言的包管理方案却大大滞后了。 Go语言生态系统中缺少的是标准化——没有用于依赖关系管理的标准工具, 也没有标准的包格式或兼容的包仓库规范。这意味着开发人员无法使用Go语言创建可重现的构建, 这是一个相当大的问题。这些年来, 社区推出了诸如dep、godep、glide和govender等工具,试图用来处理Go语言的依赖管理, 但并未成功。2018年Google在Go1.11官方推出了Go modules,为Go语言提供了支持版本化的依赖管理方案。 Go modules现在已成为Go语言标准的依赖管理工具和包仓库规范。而GoCenter为Go modules的实现和推广提供了依赖包的公共仓库,使得Go语言的开发人员能够更为稳定和方便地开发可重复构建的Go应用程序。 二、Go语言的依赖管理 在介绍GoCenter之前,我们先简要地回顾一下Go语言依赖管理的发展历程。 Go语言在推出之初,并没有明确的依赖管理方案

Go语言学习笔记 - 第二章 程序结构(The Go Programming Language)

这一生的挚爱 提交于 2020-01-13 05:17:39
第二章 程序结构 2.1命名 划重点 函数名、变量名、常量名、类型名、语句标号和包名 以一个字母(Unicode字母)或下划线开头,跟任意数量的字母、数字或下划线,大写字母和小写字母是不同的。 关键字(25个) break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 预定义的名字 (30+个),这些不是关键字,可以再定义中重新使用它们 内建常量: true false iota nil 内建类型: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error 内建函数: make len cap new append copy close delete complex real imag panic recover 作用域:内部定义内部有效;外部定义包内有效,名字开头 大写 可在包外部可见。比如: fmt 的 Print 可以在 fmt

【go】golang中置new()函数和make()函数的区别

痞子三分冷 提交于 2020-01-13 03:29:02
Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives),其功能相似,却有本质区别。 1、new 官方文档 // The new built-in function allocates memory. The first argument is a type, // not a value, and the value returned is a pointer to a newly // allocated zero value of that type. func new(Type) *Type 翻译如下: 内建函数 new 用来分配内存,第一个参数是一个类型,不是一个值,返回值是一个指向分配零值的指针 new和其他语言中的同名函数一样,new(t)分配了零值填充的类型为T内存空间,并且返回其地址,即一个*t类型的值。 返回的永远是类型的指针,指向分配类型的内存地址 它并不初始化内存,只是将其置零。*t指向的内容的值为零(zero value)。注意并不是指针为零。 2、make 官方文档 //The make built-in function allocates and initializes an object //of type slice, map, or chan (only). Like new, the

go语言第一篇。九大优势和3个缺点。

有些话、适合烂在心里 提交于 2020-01-12 19:13:17
go语言优势: Go 极其地快。其性能与 Java 或 C++相似。在我们的使用中,Go 一般比 Python 要快 30 倍。以下是 Go 与 Java 之间的基准比较: 原因 2:语言性能很重要 对很多应用来说,编程语言只是简单充当了其与数据集之间的胶水。语言本身的性能常常无关轻重。 但是 Stream 是一个 API 提供商,服务于世界 500 强以及超过 2 亿的终端用户。数年来我们已经优化了 Cassandra、PostgreSQL、Redis 等等,然而最终抵达了所使用语言的极限。 Python 非常棒,但是其在序列化/去序列化、排序和聚合中表现欠佳。我们经常会遇到这样的问题:Cassandra 用时 1ms 检索了数据,Python 却需要 10ms 将其转化成对象。 原因 3:开发者效率&不要过于创新 看一下绝佳的入门教程《开始学习 Go 语言》(http://howistart.org/posts/go/1/)中的一小段代码: package main type openWeatherMap struct{}func (w openWeatherMap) temperature(city string) (float64, error) { resp, err := http.Get("http://api.openweathermap.org/data/2.5

Windows平台下Go语言开发环境的搭建

妖精的绣舞 提交于 2020-01-12 14:02:12
什么是Go语言? Go语言百度百科 Go编程开发环境搭建 第一步: 下载并Golang软件 : https://golang.google.cn/dl/ 第二步: 双击下载的应用程序 第三步: 遵守用户协议(默认即可) 第四步: 选择安装路径 第五步: 开始安装 Go开发环境检测 打开Dos环境(Window+R), 输入 cmd , 显示如下则证明安装成功。 来源: CSDN 作者: gf_lvah 链接: https://blog.csdn.net/gf_lvah/article/details/103782100

GO语言学习之文件操作

↘锁芯ラ 提交于 2020-01-11 23:40:44
GO语言学习之文件操作 1.文件的基本介绍 》文件的概念 文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种, 文件最主要的作用就是保存数据,它既可以保存文字,图片,视频,声音 》输入流和输出流 文件在程序中是以流的形式来操作的 流:数据在数据源(文件)和程序(内存)之间经历的路径 输入流:数据从数据源(文件)到程序(内存)的路径 输出流:数据从程序(内存)到数据源(文件)的路径 》os.File封装所有文件相关操作,File是一个结构体 https://golang.org/src/os/types.go?s=369:411#L6 2.打开文件和关闭文件 》使用的函数和方法 Func Open https://golang.org/src/os/file.go?s=9082:9148#L288 Open打开一个文件用于读取,如果操作成功,返回的文件对象的方法可用于读取数据;对应的文件描述符具有 O_RDONLY模式。如果出错,错误底层类型是 *PathError func(*File)Close error Close 关闭文件f,使文件不能用于读写。它返回可能出现的错误 》案例演示 package main import ( "fmt" "os" ) func main() { //打开文件 //概念说明:file的叫法 //1.file叫file对象 //2

go语言运算符总结

大城市里の小女人 提交于 2020-01-11 04:36:12
go语言的运算符 1.算数运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 取余 2.关系运算符 运算符 描述 == 检查两个值是否相等,如果相等返回true否则返回false != 检查两个值是否不相等,如果不相等返回true否则返回false > 检查左边的值是否大于右边的值,如果是返回true否则返回false < 检查左边的值是否小于右边的值,如果是返回true否则返回false >= 检查左边的值是否大于等于右边的值,如果是返回true否则返回false <= 检查左边的值是否小于等于右边的值,如果是返回true否则返回false 3.逻辑算符 运算符 描述 && 表示and,如果两边的操作都是true,则为true,否则为false ll 表示or,如果两边操作有一个为true,则为true,否则为false ! 表示not,如果条件为true,则为false,否则为true 4.位运算符:对整数在内存中的二进制位进行操作 运算符 描述 & 参与运算的两数各对应的二进位相与,两位均为1才为1 l 参与运算的两数各对应的二进位相与,两位有一个1就为1 ^ 参与运算的两数各对应的二进位相异或,两位不一样则为1 << 左移n位就是乘以2的n次方,"a<<b"将a的各2进位向全部左移b位,高位丢弃,低位补0 >> 右移n位就是除以2的n次方,"a>>b

换个语言学一下 Golang (1)

吃可爱长大的小学妹 提交于 2020-01-11 03:01:19
做技术的总是有些拗。这么多年一直在.net的框框里打转转。直到现在市场上.net工作越来越难找,项目越来越老才发现不做出改变不行了。就从学习Go开始吧。 Go语言的特点 简洁、快速、安全 并行、有趣、开源 内存管理、数组安全、编译迅速 Go 语言用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 为什么使用Go语言 计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程、函数式编程、面向消息编程等,这些思想究竟孰优孰劣,众说纷纭。 除了OOP外,近年出现了一些小众的编程哲学,Go语言对这些思想亦有所吸收。例如,Go语言接受了函数式编程的一些想法,支持匿名函数与闭包。再如,Go语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。 Go 语言最主要的特性: 自动垃圾回收 更丰富的内置类型 函数多返回值 错误处理 匿名函数和闭包 类型和接口 并发编程 反射 语言交互性 安装环境 去官网 https://golang.org/dl/

Go开发关键技术指南

核能气质少年 提交于 2020-01-10 20:26:40
Go开发关键技术指南 本文最初发布于 GoDevGuide ,欢迎来github阅读原文。 原图链接地址: https://www.processon.com/view/link/5df22829e4b010171a411e7d#map 感谢阿里巴巴云原生微信公众号转载了这篇文章,给了很重要的改进建议,从Markdown转微信公众号也做了大量工作,配图和排版让阅读变成一种享受。如果你更习惯微信阅读,可以读下面四章: Go 开发关键技术指南 | 为什么你要选择 Go? Go 开发关键技术指南 | Go 面向失败编程 Go 开发关键技术指南 | 带着服务器编程金刚经走进 2020 年 Go 开发关键技术指南 | 敢问路在何方? Overview 本文讨论了服务器领域常见的并发等问题,也涉及到了工程化相关的问题,也整理了C背景程序员对于Go的GC以及性能的疑问,探讨了Go的错误处理和类型系统最佳实践,以及依赖管理的难处,接口设计的正交性,当然也包含我们在服务器开发中对于Go实践的总结,有时候也对一些有趣的问题做深度的挖掘,也列出了Go重要的事件和资料集合,还有Go2的进展和思考。我更想从问题本身出发,不局限于Go语言,探讨服务器中常常遇到的问题,最后回到Go如何解决这些问题,提供Go开发的关键技术指南。 下面是各个章节以及简介: About the Name

Go语言学习笔记——入门级

情到浓时终转凉″ 提交于 2020-01-10 08:16:12
Go语言 一、简介 1. 语言特色 简介、快速、安全 并行、有趣、开源 内存管理、数组安全、编译迅速 2. 语言用途 用于搭载web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 3. 主要特性 自动垃圾回收 更丰富的内置类型 函数多返回值 错误处理 匿名函数和闭包 类型和接口 并发编程 反射 语言交互性 二、环境搭建 1. 下载 安装包下载地址 https://golang.org/dl/ https://golang.google.cn/dl/ 2. Windows系统下安装 Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。 默认情况下 .msi 文件会安装在 c:\Go 目录下。你可以将 c:\Go\bin 目录添加到 Path 环境变量中。添加后你需要重启命令窗口才能生效。 3. Unix/Linux/Mac OS X或FreeBSD安装 下载二进制包: go1.4.linux-amd64.tar.gz 解压至/usr/local目录 tar -C /usr/local -xzf go1.4.linux-amd64.tar