Go
GO学习
Ryze丶
不积跬步无以至千里
展开
-
Go中没有引用传递
我关于pointers的帖子激起了很多关于map和引用语义传递的争论,这篇文章是对这些辩论的回应。需要明确的是,Go没有引用变量,因此Go没有传递引用函数调用语义。什么是reference variable(引用变量)?在像C ++这样的语言中,您可以声明别名或现有变量的替代名称。这称为reference variable。#include <stdio.h>int main() { int a = 10; int &b = a;翻译 2020-10-13 19:53:59 · 384 阅读 · 0 评论 -
Go学习(16):网络编程
网络编程一、网络编程基础go 的网络编程模块主要支持两种Internet协议: TCP 和 UDP.1.1通信协议通信协议也叫网络传输协议或简称为传送协议(Communications Protocol),是指计算机通信或网络设备的共同语言。现在最普及的计算机通信为网络通信,所以“传送协议”一般都指计算机通信的传送协议,如:TCP/IP、NetBEUI、HTTP、FTP等。然而,传送协...转载 2018-11-14 09:45:11 · 369 阅读 · 0 评论 -
Go学习(15):并发与包
并发性Concurrency1.1 什么是并发Go是并发语言,而不是并行语言。在讨论如何在Go中进行并发处理之前,我们首先必须了解什么是并发,以及它与并行性有什么不同。(Go is a concurrent language and not a parallel one. )并发性Concurrency是同时处理许多事情的能力。举个例子,假设一个人在晨跑。在晨跑时,他的鞋带松了。现在这个人...转载 2018-11-13 17:55:22 · 160 阅读 · 0 评论 -
Go学习(14):defer
defer1.1 延迟是什么?即延迟(defer)语句,延迟语句被用于执行一个函数调用,在这个函数之前,延迟语句返回。1.2 延迟函数你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题如果有很多调用defer,那...转载 2018-11-13 16:01:09 · 131 阅读 · 0 评论 -
Go学习(13):异常
错误处理1.1 什么是错误错误是什么?错误指出程序中的异常情况。假设我们正在尝试打开一个文件,文件系统中不存在这个文件。这是一个异常情况,它表示为一个错误。Go中的错误也是一种类型。错误用内置的error 类型表示。就像其他类型的,如int,float64,。错误值可以存储在变量中,从函数中返回,等等。1.2 演示错误让我们从一个示例程序开始,这个程序尝试打开一个不存在的文件。示例代...转载 2018-11-12 23:06:57 · 137 阅读 · 0 评论 -
Go学习(12):面向对象
面向对象(OOP)go并不是一个纯面向对象的编程语言。在go中的面向对象,结构体替换了类。Go并没有提供类class,但是它提供了结构体struct,方法method,可以在结构体上添加。提供了捆绑数据和方法的行为,这些数据和方法与类类似。1.1 定义结构体和方法通过以下代码来更好的理解,首先在src目录下创建一个package命名为oop,在oop目录下,再创建一个子目录命名为emplo...转载 2018-11-12 14:44:43 · 374 阅读 · 0 评论 -
Go学习(11):接口
接口1.1 什么是接口?面向对象世界中的接口的一般定义是“接口定义对象的行为”。它只指定对象应该做什么。实现这种行为的方法(实现细节)是针对对象的。在Go中,接口是一组方法签名。当类型为接口中的所有方法提供定义时,它被称为实现接口。它与OOP非常相似。接口指定了类型应该具有的方法,类型决定了如何实现这些方法。它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个...转载 2018-11-12 10:31:06 · 190 阅读 · 0 评论 -
Go学习(10):方法
方法1.1 什么是方法Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集方法只是一个函数,它带有一个特殊的接收器类型,它是在func关键字和方法名之间编写的。接收器可以是struct类型或非struct类型。接收方可以在方法内部访问。1.2 方法的语法定义方法的语法func (...原创 2018-11-11 16:28:09 · 336 阅读 · 0 评论 -
Go学习(9):结构体
一、结构体1.1 什么是结构体Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。1.2 结构体的定义和初始化type struct_variable_type struct { member definition; member definition; ... mem...转载 2018-11-09 14:03:48 · 232 阅读 · 0 评论 -
Go学习(8):指针
一、指针1.1 指针的概念指针是存储另一个变量的内存地址的变量。我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址。一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址。在上面的图中,变量b的值为156,存储在内存地址0x1040a124。变量a持有b的地址,现在a被认为指向b。1.2 获取变量的地址Go 语言的取地址符是 &amp;,放到一个变量前使用就会返...转载 2018-11-08 17:39:37 · 241 阅读 · 0 评论 -
Go学习(7):函数
一、函数1.1 什么是函数函数是执行特定任务的代码块。1.2 函数的声明go语言至少有一个main函数语法格式:func funcName(parametername type1, parametername type2) (output1 type1, output2 type2) {//这里是处理逻辑代码//返回多个值return value1, value2}fun...转载 2018-11-08 14:24:56 · 154 阅读 · 0 评论 -
Go学习(6):字符串
一、字符串(string)1.1 什么是stringGo中的字符串是一个字节的切片。可以通过将其内容封装在""中来创建字符串。Go中的字符串是Unicode兼容的,并且是UTF-8编码的。示例代码:package mainimport ( "fmt")func main() { name := "Hello World" fmt.Println(n..转载 2018-11-08 14:04:53 · 128 阅读 · 0 评论 -
Go学习(5):集合
一、集合(Map)1.1 什么是Mapmap是Go中的内置类型,它将一个值与一个键关联起来。可以使用相应的键检索值。Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的,...转载 2018-11-07 23:09:33 · 804 阅读 · 0 评论 -
Go学习(4):数组和切片
一、数组(Array)1.1 什么是数组Go 语言提供了数组类型的数据结构。数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类推。数组的下标取值范围是从0开始,到长度减1。数组一旦定义后,大小不能更改。这些性质和j...转载 2018-11-07 17:42:41 · 289 阅读 · 0 评论 -
Go学习(3):分支循环
程序的流程控制结构一共有三种:顺序结构,选择结构,循环结构。一、条件语句1.1 If语句语法格式:if 布尔表达式 { /* 在布尔表达式为 true 时执行 */}if 布尔表达式 { /* 在布尔表达式为 true 时执行 */} else { /* 在布尔表达式为 false 时执行 */}if 布尔表达式1 { /* 在布尔表达式1为 true ...转载 2018-11-05 23:13:58 · 271 阅读 · 0 评论 -
Go学习(2):基本语法
基本语法一、二进制、八进制、十进制、十六进制【扩展内容】1.1 进制二进制:逢二进一,数值只有0和1。八进制:逢八进一,数值有0,1,2,3,4,5,6,7十进制:逢十进一,数值有0,1,2,3,4,5,6,7,8,9十六进制:逢十六进一,数值有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F1.2 进制转换二进制、八进制、十六进制转为十进制十进制转为二进制、八进制...转载 2018-11-02 21:35:32 · 285 阅读 · 0 评论 -
Go学习(1):简介和配置
一、介绍和安装1.介绍创立时间2007年 google作为20%项目开始研发2009年11月10日 开源,获得TIOBE年度语言2012年3月28日 发布Go1.0版本2016年8月18日 发布Go1.7版本1.1 什么是GolangGo也被称为Golang,它是由谷歌创建的一种开源、编译和静态类型的编程语言。Golang的主要目标是使高可用性和可伸缩的web应用程序的开发变得简...转载 2018-11-01 22:11:47 · 247 阅读 · 0 评论