go语言

go语言学习-数组, slice和map

空扰寡人 提交于 2020-02-29 14:35:25
数据结构 数组 slice map 数组为值传递,当赋值给另外一个变量的时候是将值全部都copy,存一个副本,改变副本的值不会改变原有数组。slice为指针传递,改变值会改变原有slice中存的值 数组 数组定义后 长度固定 长度获取: len() 函数 所有的值类型变量在赋值,和作为参数传递时都将产生一次复制动作。 go数组是一个值类型,在函数体中无法修改传入的数组的内容,因为函数内操作的只是所 传入数组的一个副本 在数组中类型和长度共同确定一个数组类型,也就是说[5]int 和[10]int 不是一个类型 创建 声明: var myArray [5]int 推导: myArray := [3]int{1, 2, 3} 省略方式: myArray := [...]int{1,2,3} slice 切片 创建 从数组上切一片, slice1 = myArray[:5] 使用make, slice2 := make([]int, 5) 默认方式: slice3 := []int{1, 2, 3, 4, 5}, 事实上回创建一个匿名数组,不需要我们管 从切片上切一片: slice4 = slice1[:7] // 可以超过原有len(),但是不能超过cap(),多出来的部分补上零值(0) 添加 append 使用 append 添加元素: mySlice2 := []int{8, 9,

初识Go

﹥>﹥吖頭↗ 提交于 2020-02-29 11:12:28
Go简单介绍      Go是谷歌2009年研发的第二款开源的编程语言。      Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 Go语言和其他语言的区别,以及自己的优点? 学习曲线 它包含了类C语法、GC内置和工程工具。这一点非常重要,因为Go语言容易学习,所以一个普通的大学生花一个星期就能写出来可以上手的、高性能的应用。在国内大家都追求快,这也是为什么国内Go流行的原因之一。 效率 go语言有接近C的运行效率,PHP的开发效率,所以在市面上很受大家的欢迎。   出生名门,血统纯正 之所以说Go语言出身名门,是因为我们知道Go语言出自Google公司,这个公司在业界的知名度和实力自然不用多说。Google公司聚集了一批牛人,在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。而且从Go语言的发展态势来看,Google对它这个新的宠儿还是很看重的,Go自然有一个良好的发展前途。我们看看Go语言的主要创造者,血统纯正这点就可见端倪了。 自由高效:组合的思想,无侵入式的接口 go的开发效率和运行速度可以完美的融合,天生支持并发编程。Go语言支持当前所有的编程范式,包括过程式编程、面向对象编程以及函数式编程。程序员们可以各取所需、自由组合、想怎么玩就怎么玩。 强大的标准库

龙芯Go!Go!Go!——龙芯平台上构建Go语言环境指南

强颜欢笑 提交于 2020-02-28 07:38:06
一、 初识 Go 语言 Go语言是Google公司于2009年正式推出的一款开源的编程语言,是由Robert Griesemer、Ken Thompson和Rob Pike等世界顶尖计算科学家精心打造的系统编程语言。Go语言最显著的特点是编码简洁迅速、支持高效并发和自动内存管理等。此外,Go语言还面向网络服务器、存储系统和数据库等领域的编程进行了优化设计,并且简化了应用系统的安装和部署。因此,Go语言受到了广大程序员的青睐,越来越多地开始应用于谷歌和百度等知名中外企业的产品中。 Go语言形象标识 对于这样一个在云计算和大数据时代最具发展前景的编程语言,龙芯平台能不能很好地支持呢?今天我们就从Go的源代码开始,逐步构建龙芯平台上的Go语言环境。尽管笔者的实验机器为安装了龙芯开源社区版操作系统Loongnix的龙芯3B迷你电脑,本文的方法适用于所有64位操作系统的MIPS处理器平台。 一、 下载 Go 语言的源代码 为了吸引更多的社区开发力量,Google开源了Go语言的源代码,并托管于世界著名的github网站中。我们可以通过执行以下命令获取Go语言的全套源代码: $ cd ~ $ git clone https://github.com/golang/go.git 上述命令要求您的电脑中安装了git版本控制工具。如果您的电脑中没有预装git,可以通过如下命令快速安装: $ sudo

go每日新闻--2020-02-19

99封情书 提交于 2020-02-27 17:31:11
gocn_news_2020-02-19 1.使用 t.Cleanup 做测试收尾 https://ieftimov.com/post/testing-in-go-clean-tests-using-t-cleanup/ 2.Go 编程语言规范【译】 https://moego.me/golang_spec.html 3.select-case-default 忘记让出 CPU 的坑 https://mp.weixin.qq.com/s/zMZXd8DLtjhm06Q0lm1pcg 4.斗鱼配置管理中心 Minerva 的设计与实现 https://gocn.vip/topics/9794 5.Go 语言是如何运行的-链接器 https://mp.weixin.qq.com/s/_2y7oLfYftRxH8YTEm0qMw 6.编辑: yulibaozi 7.订阅新闻: http://tinyletter.com/gocn go语言中文网(每日资讯)_2020-02-19 一、Go语言中文网 只在我计算机上能跑的代码:select-case-default 忘记让出 CPU 的坑 深挖 Go 之 for-range 排坑指南 2020 重学 Go 系列:05. 详解数据类型:数组与切片 漫画:不一样的链表成环检测,Go 语言实现 kubernetes用户态TCP代理实现原理 二

Go语言基础

﹥>﹥吖頭↗ 提交于 2020-02-27 09:25:26
概念 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 语言特色 1.简洁、快速、安全 2.并行、有趣、开源 3.内存管理、数组安全、编译迅速 语言用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 语言优势 1.可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。 2.静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。 3.语言层面支持并发,这个就是Go最大的特色,天生的支持并发。Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。 4.内置runtime,支持垃圾回收,这属于动态语言的特性之一吧

go语言常用第三方扩展

喜夏-厌秋 提交于 2020-02-27 09:24:47
[TOC] go语言常用第三方扩展 之前自己写框架的时候经常会用到的第三方包,这里记录一下. goimports: 自动地添加或删除 import 声明 zap: 非常好用的一个日志包,可以分级 xorm: ORM包,非常好用也很完善 gorilla websocket包,对websocket封装的很简便.用起来省劲 fatih set: 一个SET包,可以快速获取 并集 交集 差集等 httprouter: 很方便的一个http包,比原版封装的更加简便 amqp: RabbitMQ包 go get -u -v golang.org/x/tools/cmd/goimports go get -u -v go.uber.org/zap go get -u -v github.com/go-xorm/xorm go get -u -v github.com/gorilla/websocket go get -u -v gopkg.in/fatih/set.v0 go get -u -v github.com/julienschmidt/httprouter go get -u -v github.com/streadway/amqp 来源: oschina 链接: https://my.oschina.net/chinaliuhan/blog/3164606

Go语言浅尝之方法

帅比萌擦擦* 提交于 2020-02-27 09:01:24
Hello,各位小伙伴大家好,我是小栈君,因为疫情的缘故,所以今年过了一个非同寻常的年,在这里小栈君也是衷心的希望大家清洗手,多通风,出门记得戴口罩,人多别去凑热闹。 安全卫生从你我做起,最重要的是即使呆在家里办公也别忘了学习哦~ 今天我们继续go语言系列分享之方法,对于方法的介绍,相信做过编程的小伙伴或多或少都有了解。 概念 在golang中的方法是作用在特定类型的变量上,因此自定义类型都是可以有方法的,不仅仅只有一个struct 结构体。 方法和函数的区别 但是这里方法和我们之前介绍的函数有什么区别呢? 大致小栈君为大家讲解一下,在函数中并没有对象的概念,因此我们对面向对象的函数叫做方法,但是他们本质上都是function,只是函数并不属于任何一个对象,因此只要符合条件的参数都是可以调用函数。 但是并不适用于方法。因为方法仅限于某一个对象,在后面小栈君会给大家进行实例举例说明。 格式 针对于Go语言中的方法的格式如下: func (receive type) methodName(args ) (返回参数){} 就拿我们之前讲过的一个例子而言,我们定义的一个car 和一个smallCar 结构体,其中SmallCar继承了Car的属性,理所应当的也继承了相应的方法。 但是小伙伴请注意,我们在定义方法的时候限定了Car,也就是说这一个Run方法除了Car和继承Car的子类

Go语言 之线程同步

纵饮孤独 提交于 2020-02-27 08:27:38
线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 “同步”的目的,是为了避免数据混乱,解决与时间有关的错误。实际上,不仅线程间需要同步,进程间、信号间等等都需要同步机制。 来源: https://www.cnblogs.com/yang-2018/p/11127137.html

Go语言 之文件目录操作训练

爱⌒轻易说出口 提交于 2020-02-27 08:04:20
1.从用户给出的目录中,找出所有的 .jpg 文件。 package main import ( "fmt" "os" "strings" ) func findFile(path string, files *[]string) { //以只读的形式打开目录 f, err := os.OpenFile(path, os.O_RDONLY, os.ModeDir) if err != nil { fmt.Println(err.Error()) os.Exit(-1) } defer f.Close() //-1 读取所有的 fileInfo, _ := f.Readdir(-1) separator := string(os.PathSeparator) for _, file := range fileInfo { newPath := path + separator + file.Name() //判读是否为目录 if file.IsDir() { findFile(newPath, files) } else { //判读文件是否以.jpg结尾 if strings.HasSuffix(newPath, ".jpg") { *files = append(*files, newPath) } } } } //从用户给出的目录中,找出所有的 .jpg 文件。 func

你好,Go

帅比萌擦擦* 提交于 2020-02-27 07:34:24
你好,Go Go语言是一门类似C语言的编译型语言,它的编译速度非常快。这门语言的关键字一共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 本章中,笔者将带领你去学习Go语言的基础。通过每一小节的介绍,你将发现,Go语言的世界是多么简洁,设计是如此美妙,编写Go语言将会是一件愉快的事情。等回过头来,你就会发现这25个关键字是多么亲切。 在开始编写应用之前,我们先从最基本的程序开始。就像你造房子之前不知道什么是地基一样,编写程序也不知道如何开始。因此,在本节中,我们要学习用最基本的语法让Go语言程序运行起来。 程序 这就像一个传统,在学习大部分语言之前,你先学会如何编写一个可以输出Hello World的程序。 准备好了吗?让我们开始吧! package main import "fmt" func main() { fmt.Printf("Hello, world or 你好,世界 or καλημ ́ρα κóσμor