Go语言中文网 为您找到相关结果 422

算法图解阅读笔记-选择排序

数组与链表 数组是连续内存的应用方式,它的特点就是所有的单元的内存地址都是连续的,当需要扩展而初始化的内存不足够的时候,就需要重新申请内存。 链表是已上一个元素指向来完成存储的,它在内存的存储是分散的,无论是添加还是删除较数组的最大优势就是都不需要整体动,只需要上一个元素的指向调整就好,缺点就是无法直接通过计算获得某个元素,如果要在链表中查找某一个元素,就需要遍历整个链表(最差情况) 选择排序 遍历所有元素,挑出最小的元素放在结果集中并删除该元素,直到要排序的数据集中没有元素为止。 golang版本 package main import "fmt" func main() { info := []int{12, 3, 54, 6, 6777, 2342, 234, 55, 6, 6777,...阅读全文

博文 2018-10-22 16:35:02 zhaoxi_yu

小结

在计算机中最小的信息单位是bit,也就是一个二进制位,8个bit组成一个Byte,也就是字节。一个存储单元(一个地址),可以存储一个字节,也就是8个二进制位。计算机的存储器容量是以字节为最小单位来计算的,对于一个有128个存储单元的存储器,可以说它的容量为128字节。 地址总线,是用来传输数据所在地址的,而32位系统一般有32根地址总线,那么所能传输的最大数据地址就是2^32,这里所指的地址是真实的数据地址,即物理地址。用户在使用计算机时能够访问的最大内存不单是由CPU地址总线的位数决定的,还需要考虑操作系统的实现。实际上用户在使用计算机时,进程访问到的地址都是逻辑地址,并不是真实的物理地址,逻辑地址是由操作系统提供的,并维护了逻辑地址和物理地址的映射。对于32位的windows操作系统,提...阅读全文

博文 2018-12-05 21:34:45 越塔打哭你

【Golang 基础】Go 语言的指针

Go 语言的指针   变量是一种使用方便的占位符,用于引用计算机地址,而在 Go 语言中可以通过 & 符号获取一个变量在计算机中对应的内存地址。 package basic import "fmt" func main(){ a := 1 fmt.Println(&a) // 0xc4200180a0 }   一个指针变量指向了一个值的内存地址。Go 语言中的指针语法与 C++ 类似,都是使用 * 符号声明指针变量; package basic import "fmt" func main(){ a := 1 var p *int = &a fmt.Printf("获取变量内存地址 %x\n", p) // 获取变量内存地址 c4200180a0 fmt.Printf("获取指针变量值 %v...阅读全文

博文 2019-03-21 01:34:40 龙泷VK

NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨

摘要: “IP直连方案”主要在于解决DNS污染、省去DNS解析时间,通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求,下面将支持 Post 请求中面临的一个挑战,以及应对策略介绍一下。 “IP直连方案”主要在于解决DNS污染、省去DNS解析时间,通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求,下面将支持 Post 请求中面临的一个挑战,以及应对策略介绍一下: 在支持POST请求过程中会遇到丢失 body的 问题,有以下几种解决方法: 方案如下: 1.换用 NSURLConnection 2.将 body 放进 Header 中 3.使用 HTTPBodyStream ...阅读全文

Go语言变量

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。Go 语言变量名由字母、数字、下划线组成,其中首个字母不能为数字。声明变量的一般形式是使用 var 关键字: var identifier type变量声明第一种,指定变量类型,声明后若不赋值,使用默认值。 var v_name v_typev_name = value第二种,根据值自行判定变量类型。 var v_name = value第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。 v_name := value// 例如 var a int = 10 var b = 10c := 10...阅读全文

go语言渐入佳境-网络[4]-port

端口port服务器运行在主机上。 IP地址将定位主机。但是在每台计算机上可能有很多服务,需要一种简单的方法来区分它们。 TCP,UDP,SCTP等使用的方法是使用端口号。有许多“标准”端口。 Telnet通常使用端口23,TCP协议。 DNS使用端口53,使用TCP或UDP。 FTP使用端口21和20,一个用于命令,另一个用于数据传输。HTTP通常使用端口80,但它通常使用端口8000,8080和8088,所有端口都使用TCP。在Unix系统上,常用端口列在文件/etc/services中。 Go具有查询此文件的功能测...阅读全文

博文 2020-01-14 22:33:14 jonson_jackson

Golang中make和new的区别

new:func new(Type) *Type 接受一个参数,这个参数是一种类型,而不是一个值,分配好内存后, 返回一个指向该类型内存地址的指针,这个指针指向的内容的值为该类型的零值。 对于不同的数据类型,零值的意义是完全不一样的。 比如,对于bool类型,零值为false;int的零值为0;string的零值是空字符串 make:func make(t Type, size ...IntegerType) Type 同样用于内存分配,但和new不同,make用于channel,slice和map的分配, 而且返回的类型就是这三个类型本身,而不是它们的指针, 因为这三种类型本身就是引用类型,所以就没必要返回他们的指针了。 具体而言,有如下几种用法: (1)make(map[string]s...阅读全文

博文 2020-04-18 17:32:50 普朗tong

golang基础---Slice切片

切片Slice在go语言中是单独的类型(指向底层的数组),不同于python(对可迭代对象操作的工具),注意区分数组和slice的区别 定义一个空slice,格式var s []int,这种既没有长度也没有元素赋值的类型(相比叫array) 数组的基本操作如下 ,类似与python中列表切片的操作,详见实例 package main import "fmt" func main() { var s1 []int //这样就是一个slice类型,既没有长度也没有元素赋值 a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //这是一个数组 s2 := a[5:10] //切片,索引5到10的元素,不包含索引为10 s3 := a[:3] //切片,索引1-3...阅读全文

博文 2018-07-12 13:30:39 failymao

认识 Go 语言中的数组

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。 声明方式 在 Go 语言中,数组的声明方式为 var identifier [len]type。 声明时没有指定数组的初始化值,因此所有的元素都会被自动初始化为默认值 0。 // 声明一个数组 var a1 [5]int 复制代码Go 语言中的数组是值类型,因此还可以用 new 来创建: var a2 = new([5]int) 复制代码new 返回类型的指针,因此 a1 与 a2 的区别在于:a1 的类型为 [5]int,a2 的类型为 *[5]int。 初始化方法 我们通过在 {} 中填写初始化值来初始化数组。 指明数组长度 指明数组的长度 len,然后在 {} 中填写初始化值,这些值会按下标从小到大的顺序分配。 初始化值的个数...阅读全文

博文 2019-11-21 14:04:20 江不知

Golang package sync 剖析(二): sync.WaitGroup

一、前言 Go语言在设计上对同步(Synchronization,数据同步和线程同步)提供大量的支持,比如 goroutine和channel同步原语,库层面有 - sync:提供基本的同步原语(比如Mutex、RWMutex、Locker)和 工具类(Once、WaitGroup、Cond、Pool、Map) - sync/atomic:提供变量的原子操作(基于硬件指令 compare-and-swap) -- 引用自《Golang package sync 剖析(一): sync.Once》 上一期中,我们介绍了 sync.Once 如何保障 exactly once 语义,本期文章我们介绍 package sync 下的另一个工具类:sync.WaitGroup。 二、为什么需要 Wa...阅读全文

博文 2020-01-28 14:32:39 oscarzhao

Go语言笔记:变量

变量指向一个内存地址,其中存储了某种类型的值。在静态语言中,此内存存储的变量类型不可变。 Go 中的变量如何声明? Go 变量声明可以指定哪些类型? Go 中如何实现类型的转换和断言? 1. Go 中的变量如何声明 使用 var 关键词声明变量,有以下几种可变形式: 简单的类型声明:var a int 声明并赋初值:var a int = 1 或 var a = 1 同时声明多个变量: var a, b = 1, 2 当声明初始值时,可以不用指定类型,Go 会根据赋值判断并自动定义变量的类型。 以下为变量声明的示例: package main import "fmt" func main() { var a int var b int = 2 var c = 3 var d, e = 4, ...阅读全文

Golang中make与new有何区别?

Golang中make与new有何区别? 一、前言 本文主要给大家介绍了Go语言中函数new与make的使用和区别,关于Go语言中new和make是内建的两个函数,主要用来创建分配类型内存。在我们定义生成变量的时候,可能会觉得有点迷惑,其实他们的规则很简单,下面我们就通过一些示例说明他们的区别和使用。 二、变量的声明 var i int var s string ​ 变量的声明我们可以通过var关键字,然后就可以在程序中使用。当我们不指定变量的默认值时,这些变量的默认值是他们的零值,比如int类型的零值是0,string类型的零值是"",引用类型的零值是nil。 对于例子中的两种类型的声明,我们可以直接使用,对其进行赋值输出。但是如果我们换成指针类型呢? test1.go package m...阅读全文

博文 2020-03-09 15:36:02 刘丹冰Aceld

区块链入门教程以太坊源码分析p2p-dial.go源码分析

dial.go在p2p里面主要负责建立链接的部分工作。 比如发现建立链接的节点。 与节点建立链接。 通过discover来查找指定节点的地址。等功能。dial.go里面利用一个dailstate的数据结构来存储中间状态,是dial功能里面的核心数据结构。// dialstate schedules dials and discovery lookups.// it get's a chance to compute new tasks on every iteration// of the main loop in Server.run.type dialstate struct {maxDynDials int //最大的动态节点链接数量ntab discoverTable //disco...阅读全文

博文 2019-06-12 17:03:20 xczxsa

[Go 教程系列笔记]Interface 第二部分

Go 教程系列笔记 Interface 第一部分 Go 教程系列笔记 Interface 第二部分 Go 教程系列笔记 并发介绍 Go 教程系列笔记 goroutine(协程) Go 教程系列笔记 Channel 通道 Go 教程系列笔记 缓冲通道和工作池 Go 教程系列笔记 Select Go 教程系列笔记 Mutex(互斥锁) Go 教程系列笔记 结构而不是类-Go中的OOP Go 教程系列笔记 组合而不是继承-Go 中的 OOP Go 教程系列笔记 多态-Go 中的 OOP 使用指针接收器和值接收器实现接口 我们在第1部分中讨论的所有示例接口都是使用值接收器实现的。也可以使用指针接收器实现接口。在使用指针接收器实现接口时需要注意一些细微之处。让我们了解使用以下程序。 type Desc...阅读全文

博文 2019-08-14 16:02:42 xfstart07

Golang中make和new的区别

1:new:func new(Type) *Type 接受一个参数,这个参数是一种类型,而不是一个值,分配好内存后,返回一个指向该类型内存地址的指针,这个指针指向的内容的值为该类型的零值。对于不同的数据类型,零值的意义是完全不一样的。比如,对于bool类型,零值为false;int的零值为0;string的零值是空字符串2:make:func make(t Type, size ...IntegerType) Type,具体而言,有如下几种用法:(1)make(map[string]string):即缺少长度的参数,只传类型,这种用法只能用在类型为map或chan的场景(2)make([]int, 2):指定了长度,例如make([]int, 2)返回的是一个长度为2的slice(3)mak...阅读全文

博文 2020-04-17 07:32:44 普朗tong

CentOS7开启SSH并且安装Docker与oh-my-zsh

开启SSH 修改SSH配置文件/etc/ssh/sshd_config vi /etc/ssh/sshd_config 修改38行PermitRootLogin和65行PasswordAuthentication为yes 设置密码, 输入命令 passwd 重启SSH服务使修改生效 service sshd restart ##centos 7 安装zsh配置oh-my-zsh 安装: yum install -y zsh 设置默认shell: chsh -s /bin/zsh 安装Git: yum install -y git 安装oh-my-zsh(自动) -- 网络问题可能会报错 -- curl: (7) Failed connect to raw.githubusercontent....阅读全文

博文 2020-04-23 10:32:51 Ozixue

7. Go 语言数据类型:指针

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 0. 什么是指针 当我们定义一个变量 name var name string = "Go编程时光" 此时,name 是变量名,它只是编程语言中方便程序员编写和理解代码的一个标签。 当我们访问这个标签时,机算机会返回给我们它指向的内存地址里存储的值:Go编程时光。 出于某些需要,我...阅读全文

博文 2020-04-29 08:32:44 Python编程时光

Go语言基础 - 变量与常量

一、变量 程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。 1. 声明 // 标准声明:var 变量名 变量类型 var name string // 批量声明: var ( a string b int ) 2. 初始化 var name string = "Go" // 类型推导: var name = "Go" // 一次初始化多个变量: var name, age = "Go", 10 // 短变量声明: shortName := "Go" // 匿名变量...阅读全文

博文 2020-04-08 16:32:44 不留烦

Go语言入门(六)结构体后续&指针

结构体后续&指针 指针 变量和内存地址 每个变量都有内存地址,可以通过变量来操作对应的内存 func varMem() { var a int32 = 100 fmt.Printf("addr %p\n",&a) } func pointMem() { var b int32 b = 32 var a *int32 fmt.Printf("addr of a:%v\ntype of a %T\n",a,a) //取出a的地址和类型 a = &b fmt.Printf("a %d addr:%p\ntype of a:%T\nb %d addr %p\n",*a,&a,a,b,&b) } 指针的定义与取值 &: 取地址 *: 取指针对应的值 充分判断指针为nil的情况 func pointMe...阅读全文

博文 2020-03-26 23:33:13 wx5b285b48ed74e

每天一点Go语言——变量、常量、运算符解析

每天一点Go语言——变量、常量、运算符解析 前言 ​ 前面简单说过有关Go语言的基础语法及其数据类型,大致上了解了Go语言程序的组成,而本文将讲述近乎所有编程语言都涉及的变量、常量以及运算符相关内容。 一、变量 何为变量? ​ 对该专业名词解释:计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。Go语言中的变量由字母、数字、下划线组成,首字母不可以为数字。耳熟能详了哈~ ​ 笔者的理解:我编写程序的时候需要使用一个值,并且我一直想要重复使用,而且有时候这个值会发生变化等等,所以我需要声明一个变量来被这个值赋之。 怎么声明变量? 变量声明一般格式: var 变量名 变量类型 var:变量声明关键字,表示声明变量 其次是变量的名字,最后是变量的类型(如int) 当然也有其他的...阅读全文

博文 2020-04-04 15:33:12 wx5d8a17c45cb5b

从零开始的数组,这么设计么是为什呢?

为什么数组要从零开始? 如题,数组第一个元素为什么要从零开始,而不从一开始?感觉这很反人类呀,正常来讲,一个集合的开始,不应该从一吗? 对于这个问题,我觉得可以从以下两方面来考虑。 1设计层面 我们先了解一下数组最基本的结构和寻址方式(即实现方式)。 现在市面上无论是C、Java、PHP,还是Go或者其他编程语言,他们数组的实现方式,应该都是一样的:一段连续的内存。 file 数组在分配内存的时候,我们会知道数组的 开始地址 (PS:在目前下标为零的情况下,也等同于数组的第一个元素的地址) 111.png 因为数组中每个元素的类型都是相同的,所以每种类型所占的内存大小是固定的,因而导致数组中每个元素的所占的内存大小都是相同的 file 由此我们可以得出,数组中每个元素地址的计算公式: // ...阅读全文

Go语言基础 - 变量与常量

一、标识符 标识符是程序员定义的具有特定含义名词,如常量名、变量名和函数名等等 Go语言的标识符组成成分:字母、数字和下划线_,并且只能以字母和_开头,如ab3,_ab3 二、关键字 Go语言中预先定义好的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 以及37个保留字: Constants: true false iota nil Types: int int8 int16 int32 int64 uint uint8...阅读全文

博文 2020-04-07 15:32:42 不留烦