Golang 学习笔记:参数类型传递机制

布尔型,整型,指针布尔型和整型一般不用考虑指针类型,因为它们的对象很小,在内存上的开销可以忽略不计。只有想修改同一个变量的值才用指针传递。 数组从内存和性能的角度上看,在函数间传递数组的开销是十分巨大的,当这个变量是一个数组时,不管这个数组有多长都会被完整复制,然后传递给函数 字典,切片,通道这三个类型都是指向指针类型(指向一个底层的数据结构),可以当成是 *T 类型使用。 判断是否需要创建副本 参数类型 T 副本创建 (按值传递) type Duck struct { Age int Name...阅读全文

Segmentfault 2020-06-04 15:32:36 sunlingbot

Golang 学习笔记:函数

函数 在Go语言中,函数可以分为具名函数和匿名函数,包级函数一般是具名函数,具名函数是匿名函数的一种特例。函数也可以看成是封装好一系列语句的代码块,用以提高代码的模块度和复用率。 Go语言的函数属于“一等值,(first-class)”,满足以下特点: 函数本身可以被当成值传递 函数本身可以满足接口 支持匿名函数和闭包 函数调用 需求:定义两个函数,实现两数相加和两数相乘的功能,允许被main函数外部调用。 //定义一个小马函数实现两数相加功能 func Xiaoma(a int,b int)i...阅读全文

Segmentfault 2020-06-04 08:32:33 sunlingbot

Golang 基础数据类型(二)

强制类型数据转换 类型转换用于将一种数据类型的变量转换为另外一种类型的变量。Go语言类型转换的基本格式如下: type_name(expression) 在做强制类型转换时,需要特别注意数据长度被截断而发生的数据精度损失(比如将浮点型转换为整型)与值溢出(值超过转换目标类型的值范围时)。 func main() { num := 5 num1 := 11 num2 := float32(num) //把整型转换成浮点型 num3 := float32(num1) mean := num1 / n...阅读全文

Segmentfault 2020-06-03 17:32:36 sunlingbot

Golang 基础数据类型(一)

基础数据类型 在Go语言中,数据类型用于声明函数与变量、常量数据的类型,声明何种数据类型主要是为了提高内存的利用率,因为不同的数据类型在内存所需要的空间大小是不一样的。 Golang内置基础数据类型如下表所示: 数据类型名称 类型和描述 boolean 布尔型,值可以是常量true或false int&uint 带符号和无符号两种整型。int8,int16,int32(rune),int64和uint8(byte),uint16,uint32,uint64。uintptr类型在指针小节中单独介绍...阅读全文

Segmentfault 2020-06-03 15:32:34 sunlingbot

Golang 学习笔记:流程控制

条件语句 Go语言没有do-while语句,而for语句拥有更广泛的含义和用途switch语句也有进一步的扩展,支持类型判断和初始化子句等。 常见的流程控制的关键字有: defer:用于捕获异常和资源回收等工作 select:用于多支选择(配合通道使用) go:用于异步启动 goroutine 并执行特定函数 if判断语句 func main() { a := 15 if a < 20 { fmt.Println("a小于20") } //顺序执行 fmt.Println("a的值是", a) ...阅读全文

Segmentfault 2020-06-03 15:32:33 sunlingbot

Golang 学习笔记:程序结构

Go语言的程序元素 Go语言包含了五种程序符号,分别是标识符(identifier)、关键字(keyword)、运算符(operator)、分隔符(delimiter)与字面量(literal)。这五种程序元素组合成各种表达式和语句。 标识符标识符是用于标识变量、函数或任何用户自定义项目的名称(程序实体) 标识符可分为两类,一类是用户定义的标识符,作为程序实体存在;另一类是预定义标识符,它们在Go语言中的源代码被声明(如数据类型)。还有一个特殊的标识符,叫空标识符,记作 "_",一般用在变量声明...阅读全文

Segmentfault 2020-06-03 15:32:33 sunlingbot

高频golang面试题:简单聊聊内存逃逸?

问题 知道golang的内存逃逸吗?什么情况下会发生内存逃逸? 怎么答 golang程序变量会携带有一组校验数据,用来证明它的整个生命周期是否在运行时完全可知。如果变量通过了这些校验,它就可以在栈上分配。否则就说它 逃逸 了,必须在堆上分配。 能引起变量逃逸到堆上的典型情况: 在方法内把局部变量指针返回 局部变量原本应该在栈中分配,在栈中回收。但是由于返回时被外部引用,因此其生命周期大于栈,则溢出。发送指针或带有指针的值到 channel 中。 在编译时,是没有办法知道哪个 goroutine ...阅读全文

掘金 2020年06月03日 9號同学

高频golang面试题:简单聊聊内存逃逸?

问题 知道golang的内存逃逸吗?什么情况下会发生内存逃逸? 怎么答 golang程序变量会携带有一组校验数据,用来证明它的整个生命周期是否在运行时完全可知。如果变量通过了这些校验,它就可以在栈上分配。否则就说它 逃逸 了,必须在堆上分配。 能引起变量逃逸到堆上的典型情况: 在方法内把局部变量指针返回 局部变量原本应该在栈中分配,在栈中回收。但是由于返回时被外部引用,因此其生命周期大于栈,则溢出。 发送指针或带有指针的值到 channel 中。 在编译时,是没有办法知道哪个 goroutine...阅读全文

简书 2020-06-03 11:33:09 9號

golang 切片在函数传递

背景: 切片当参数传递时,无法append package main func test(a []int){ a=append(a,1,2,3) // print [89 4 5 6 1 2 3] } func main(){ var s []int=[]int{89,4,5,6} test(s) fmt.Println(s) } 原因: go语言中切片是地址传递,test函数添加的1,2,3后被分配了新的地址,s切片还是指向原来的地址,a和s内存地址不一样 image.png 解决方法:推荐方...阅读全文

简书 2020-06-03 11:33:00 jojo1313

初识CDN

## 什么是`CDN`? * `CDN`的全称`Content Delivery Network`,即 内容分发网络. * 简单来讲`CDN`是用户到源服务器之间的一层缓存层, 缓存一些静态资源, 静态的web页面, 流媒体等, 提高访问速度, 降低源服务器负载(网络资源, 硬件资源), 集体抗`D.D.O.S`(高可用)。 ## 一个简陋`CDN`模型 * `Nginx`web反向代理服务器, 一般用于web服务器负载均衡, 具有静态资源缓存的功能, 此处我们重点利用...阅读全文

Go语言中文网 2020-06-03 11:17:50 loop_0

26. Go 语言中通道死锁经典错误案例详解

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 刚接触 Go 语言的信道的时候,经常会遇到死锁的错误,而导致这个错误的原因有很多种,这里整理了...阅读全文

掘金 2020年06月03日 王一白

cpu信息获取工具WGCLOUD,v3.0 bug 修复

WGCLOUD基于java语言开发,是springboot构建的监控系统,支持高并发高性能,核心模块包括:服务器集群监控,ES集群状态监控,CPU监控,内存监控,数据监控,docker监控,网络流量监控,服务心跳检测,应用进程管理,磁盘IO监控,系统负载监控,监控告警信息推送。 此次更新: 修复docker图表显示不准确问题。 修复测试邮件发送错误问题。 以上bug,在已安装v3.0基础上,只需要重新下载安装包, 然后只替换/server/wgcloud-server-release.jar即可...阅读全文

Segmentfault 2020-06-03 15:32:32 tianshiyeben

Golang 学习笔记:环境变量及代理

前言 服务器迁移的过程中,数据库出了点小问题,导致先前写的几篇关于Golang的学习笔记直接丢失,简直欲哭无泪有没有,不过那些笔记都比较零散,所以现在只好重新撰写,也顺便锻炼一下自己的总结能力。所以即便你没接触过Golang,我相信绝大数程序猿对这只蓝色的囊地鼠一定不会陌生,就像看到章鱼猫会本能地反映出这是Github的吉祥物。 在学习Golang之前,我们先来了解一些关于Go语言目前的生态状况是如何。 Go语言是Google于2009年正式发布的一款开源的静态编译编程语言。 Go语言由Rob ...阅读全文

Segmentfault 2020-06-03 14:32:44 sunlingbot

为什么GOPROXY对Golang开发如此重要

引言 从Go 1.13开始,Go Module作为Golang中的标准包管理器,在安装时自动启用,并附带一个默认的GOPROXY。 但是对于其他的GOPROXY选项,比如JFrog GoCenter,以及你自己的Go Module包,你需要在公众视野中保持安全,你应该选择什么样的配置? 你怎样才能不让你的公共和私人资源成为一个纠缠的结? 先让我们来看看GOPROXY是干什么的,以及如何为一个快速、可靠和安全的系统设置一个GOPROXY。 什么是GOPROXY? GOPROXY控制Go Modul...阅读全文

51CTO博客 2020-06-02 17:54:53 JFrog中国

26. Go 语言中通道死锁经典错误案例详解

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 刚接触 Go 语言的信道的时候,经常会遇到死锁的错误,而导致这个错误的原因有很多种...阅读全文

Segmentfault 2020-06-03 14:32:45 Python编程时光

带你学够浪:Go语言基础系列 - 8分钟学控制流语句

★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ” 对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握。基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Golang 这趟新车。 Hurry up , Let's go ! 控制语句是程序的灵魂,有了它们程序才能完成各种逻辑,今天我们就来学习 Go 中的各...阅读全文

掘金 2020年06月02日 柠檬橙

带你学够浪:Go语言基础系列 - 8分钟学控制流语句

文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握。基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Golang 这趟新车。 Hurry up , Let's go ! 控制语句是程序的灵魂,有了它们程序才能完成各种逻辑,今天我们就来学习 Go 中的各种控制语...阅读全文

简书 2020-06-03 00:32:44 柠檬橙1024

为什么GOPROXY对Golang开发如此重要

为什么GOPROXY对Golang开发如此重要引言从Go 1.13开始,Go Module作为Golang中的标准包管理器,在安装时自动启用,并附带一个默认的GOPROXY。但是对于其他的GOPROXY选项,比如JFrogGoCenter,以及你自己的Go Module包,你需要在公众视野中保持安全,你应该选择什么样的配置? 你怎样才能不让你的公共和私人资源成为一个纠缠的结?先让我们来看看GOPROXY是干什么的,以及如何为一个快速、可靠和安全的系统设置一个GOPROXY。什么是GOPROXY?...阅读全文

简书 2020-06-02 19:32:47 JFrog杰蛙科技