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

Go进阶:反射3定律

各位学习Go语言的朋友,周末好,这次跟大家聊一聊Go语言的一个高级话题:反射。 这篇文章是从我过去的学习笔记修改来的,内容主要来自Go Blog的一篇文章《The law of reflection》。 这篇文章主要介绍反射和接口的关系,解释内在的关系和原理。 反射来自元编程,指通过类型检查变量本身数据结构的方式,只有部分编程语言支持反射。 类型 反射构建在类型系统之上,Go是静态类型语言,每一个变量都有静态类型,在编译时就确定下来了。 比如: type MyInt int var i int var j MyInt i和j的底层类型都是int,但i的静态类型是int,j的静态类型是MyInt,这两个是不同类型,是不能直接赋值的,需要类型强制转换。 接口类型比较特殊,接口类型的变量被多种对象...阅读全文

博文 2019-02-25 19:34:43 shitaibin

golang接口

定义 在 Go 中,关键字 interface 被赋予了多种不同的含义。每个类型都有接口,意味着对那个类型定义了方法集合 。 这段代码定义了具有一个字段和两个方法的结构类型 S。 type S struct { i int } func (p *S) Get() int { return p.i } func (p *S) Put(v int) { p.i = v } 可以定义接口类型,仅仅是方法的集合。 type I interface { Get() int Put(int) } 定义另外一个类型同样实现了接口 : type R struct { i int } func (p *R) Get() int { return p.i } func (p *R) Put(v int) { p...阅读全文

博文 2020-01-01 02:32:52 程序小白菜

golang-101-hacks(23)——io.Reader接口

注:本文是对golang-101-hacks中文翻译 io.Reader 是一个基础性的 且使用非常频繁的接口 type Reader interface { Read(p []byte) (n int, err error) } 对于实现了io.Readerr的接口类型,可以将它想象成一个管道。将内容写入管道的一端,通过实现了' Read() '方法的类型从管道的另一端读取内容。无论是普通文件,还是网络套接字。只要实现了io.Readerr的接口的类型,都可以读取其内容。 如下例所示 package main import ( "fmt" "io" "log" "os" ) func main() { file, err := os.Open("test.txt") if err != n...阅读全文

博文 2019-06-28 02:02:40 羊羽shine

Go基础系列:Go接口

接口用法简介 接口(interface)是一种类型,用来定义行为(方法)。 type Namer interface { my_method1() my_method2(para) my_method3(para) return_type ... } 但这些行为不会在接口上直接实现,而是需要用户自定义的方法来实现。所以,在上面的Namer接口类型中的方法my_methodN都是没有实际方法体的,仅仅只是在接口Namer中存放这些方法的签名(签名 = 函数名+参数(类型)+返回值(类型))。 当用户自定义的类型实现了接口上定义的这些方法,那么自定义类型的值(也就是实例)可以赋值给接口类型的值(也就是接口实例)。这个赋值过程使得接口实例中保存了用户自定义类型实例。 例如: package mai...阅读全文

博文 2018-11-23 09:11:29 f-ck-need-u

Types of GoLang

Types of GoLang [TOC] bool Numeric Types int8, int16, int32, int64, int uint8, uint16, uint32, uint64, uint float32, float64 complex64, complex128 byte rune String Bool bool type represents a boolean, either true or false package main import "fmt" func main(){ a := true b := false fmt.Println("boolean a:",a ,"b:",b) c := a && b d := a || b fmt.Prin...阅读全文

博文 2019-07-12 18:32:40 Cease息事

Golang 复合数据类型:接口

接口 Golang 不是传统的面向对象编程语言,它没有类和继承的概念,但是有非常灵活的接口概念,通过它可以实现很多面向对象的特性,接口提供了一种方式来说明这样的行为:如果谁能搞定这件事,它就可以在这里调用。接口定义了一组方法(方法集),这些方法都是抽象的,即不包含实现这些方法的代码,接口也不包含变量。Golang 中的接口方法不会很多,一般只有0~3个方法;而且 Golang 是接口可以有值,表现为一个接口变量或者一个值。 //声明接口类型speaker //不管是什么类型,只要实现了speak方法,都可认为是接口类型 type speaker interface { speak() } //声明三个具体实现接口方法的结构体 type cat struct { } func (c cat)s...阅读全文

博文 2020-06-03 16:32:43 sunlingbot

高效生成JSON串——json-gen

概述 游戏服务端的很多操作(包括玩家的和非玩家的)需要传给公司中台收集汇总,根据运营的需求分析数据。中台那边要求传过去的数据为 JSON 格式。一开始我们使用 golang 标准库中的encoding/json,发现性能不够理想(因为序列化使用了反射,涉及多次内存分配)。由于数据原始格式都是map[string]interface{},且需要自己一个字段一个字段构造,于是我想可以在构造过程中就计算出最终 JSON 串的长度,那么就只需要一次内存分配了。 使用 下载: $ go get github.com/darjun/json-gen 复制代码导入: import ( jsongen "github.com/darjun/json-gen" ) 复制代码使用起来还是比较方便的: m := ...阅读全文

Go实现数据结构--栈

使用golang语言的interface接口类型创建栈,栈可以操作各种数据类型,非常简洁方便 package main import "fmt" // 栈:先进后出,从栈顶取数据,栈低固定 type Stack struct { Top int // 栈顶 Capacity int // 栈容量 Prt *[]interface{} // 指向栈指针 } // 初始化栈 func (s *Stack) StackInitial(capacity int){ s.Capacity =capacity s.Top =0 // 使用interface类型,所有数据类型都能兼容 m:= make([]interface{},capacity) s.Prt =&m } // 元素入栈,栈顶上升 fun...阅读全文

博文 2020-04-09 18:32:54 阿鸠先生

2018-09-17

go语言基础 hello world1.常量的定义//常量定义const PI =3.142.一般类型声明type myInt int//数据类型3.全局变量的声明与赋值var myName ="golang"4.结构的声明type myPerson struct {}5.接口的声明type myGolang interface {}6.hello world !func main() {fmt.Println("hello world! 你好世界! ")...阅读全文

博文 2018-09-17 21:34:39 tomato波

深入理解Go之==

概述 相信==判等操作,大家每天都在用。之前在论坛上看到不少人在问 golang ==比较的结果。看到很多人对 golang 中==的结果不太了解。确实,golang 中对==的处理有一些细节的地方需要特别注意。虽然平时可能不太会遇到,但是碰到了就是大坑。本文将对 golang 中==操作做一个系统的介绍。希望能对大家有所帮助。 类型 golang 中的数据类型可以分为以下 4 大类: 基本类型:整型(int/uint/int8/uint8/int16/uint16/int32/uint32/int64/uint64/byte/rune等)、浮点数(float32/float64)、复数类型(complex64/complex128)、字符串(string)。 复合类型(又叫聚合类型):数组...阅读全文

博文 2019-08-20 11:32:44 孤雨

Go 语言的 4 个特性改动

文链接:Go 语言的 4 个特性改动 在 Go1.1 可以看到某个版本的 Go 语言一些改动文档(修改 URL 参数查看别的版本)。 其中以 Go1.1#language 标签下关于语言特性方面的尤为重要。 在每个 Go 语言新版本发布后浏览一下,是个良好的习惯。 下面我会从 Go1.1 到 Go1.11 以来挑 4 个值得讨论的改动来跟大家分享一下。 三索引切片 版本: Go1.2 在现有数组或切片下,使用第二个冒号来指示新生成的切片的容量。 func TestThreeIndex(t *testing.T) { s := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} s1 := s[2:4] // 等价于 s[2:4:cap(s)],省略取 cap(s)。 ...阅读全文

Golang-04 reflect 学习笔记

图片发自简书App 0x01 reflect.TypeOf TypeOf, 看名知义: 读取对象的固有类型信息 包名 类型名 属性信息 属性名称 Tag 方法信息 方法名称 type Man struct { Name string `hello:"world"` } func (m Man) String() string { return fmt.Sprintf("Man.Stringer() is %s", m.Name) } func (m Man) GoString() string { return fmt.Sprintf("Man.GoStringer() is %s", m.Name) } func main() { man := Man{Name: "Gorey"} to ...阅读全文

博文 2019-08-28 23:33:01 国服最坑开发

面向接口 - day 3

type Traversal interface { Traverse() } func main() { traversal := getTraversal() traversal.Traverse() } duck typing 描述事物的外部行为而非内部结构 golang类似duck typing golang中接口是由使用者定义的 实现者只需要实现接口的方法就可以 接口的内部实现 接口中包含实现者的类型和实现者的值/实现者的指针 将实现者赋值给接口变量时有两种方式:值赋值和指针赋值 值赋值是将实现者的值赋给接口的内部变量 指针赋值是将实现者的指针赋值给接口的内部变量 接口的指针赋值只能将实现者的指针赋值给接口变量 接口的值赋值既可以将实现者的指针赋值给接口变量又可以将值赋值给接口变量...阅读全文

Golang之Interface

前言 由于golang中说interface的文章太多了,很多都已经说的很细节了,所以我再说感觉也有点难。于是总结出几个关键问题,供你参考,如果能做到准确无误有理有据的回答,那么interface应该是没有问题了。 interface底层结构有哪两种,分别是什么样子的,里面保存了哪些信息? 其中tab是什么时候生成的? 从别的类型转换成interface,从interface转换成别的类型,这两者的过程是怎么样的? 两个interface之间是否可以比较? golang底层是如何判断一个类型是否实现了一个interface? 1、底层结构 type eface struct { // 16 bytes on a 64bit arch _type *_type data unsafe.Poin...阅读全文

博文 2019-08-26 15:33:14 LinkinStar

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

Go进阶:反射3定律

各位学习Go语言的朋友,周末好,这次跟大家聊一聊Go语言的一个高级话题:反射。 这篇文章是从我过去的学习笔记修改来的,内容主要来自Go Blog的一篇文章《The law of reflection》。 这篇文章主要介绍反射和接口的关系,解释内在的关系和原理。 反射来自元编程,指通过类型检查变量本身数据结构的方式,只有部分编程语言支持反射。 类型 反射构建在类型系统之上,Go是静态类型语言,每一个变量都有静态类型,在编译时就确定下来了。 比如: type MyInt int var i int var j MyInt i和j的底层类型都是int,但i的静态类型是int,j的静态类型是MyInt,这两个是不同类型,是不能直接赋值的,需要类型强制转换。 接口类型比较特殊,接口类型的变量被多种对象...阅读全文

博文 2019-02-25 19:34:41 大彬

6. Go 语言数据类型:字典与布尔类型

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 字典 字典(Map 类型),是由若干个 key:value 这样的键值对映射组合在一起的数据结构。 它是哈希表的一个实现,这就要求它的每个映射里的key,都是唯一的,可以使用 == 和 != 来进行判等操作,换句话说就是key必须是可哈希的。 什么叫可哈希的?简单来说,一个不...阅读全文

博文 2020-04-28 08:32:43 Python编程时光

3. Go语言数据类型:整型与浮点型

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更多的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 1. 整型 Go 语言中,整数类型可以再细分成10个类型,为了方便大家学习,我将这些类型整理成一张表格。 int 和 uint 的区别就在于一个 u,有 u 说明是无符号,没有 u 代表有符号。 解释这个符号的区别 以 int8 和 uint8 举例,8 代表 8个bit,能表示的数值个数有 2^8 = 256。 u...阅读全文

博文 2020-04-25 20:32:42 Python编程时光

Go36-14-接口

接口 通过关键字type和interface,我们可以声明出接口类型。接口类型的类型字面量与结构体类型的看起来有些相似,它们都用花括号包裹一些核心信息。只不过,结构体类型包裹的是它的字段声明,而接口类型包裹的是它的方法定义。 实现接口 接口类型声明中的这些方法所代表的就是该接口的方法集合。一个接口的方法集合就是它的全部特征。对于任何数据类型,只要它的方法集合中完全包含了一个接口的全部特征(即全部的方法),那么它就一定是这个接口的实现类型: type Pet interface { SetName(name string) Name() string Category() string } 这里声明了一个接口类型Pet,它包含3个方法定义。这3个方法共同组成了接口类型Pet的方法集合。只要一个...阅读全文

博文 2019-01-10 12:35:09 骑士救兵

golang-101-hacks(22)——Types

注:本文是对golang-101-hacks中文翻译 Go语言中的数据类型可分为两类:已命名和未命名。除了预先已声明的类型(如“int”、“rune”等),还可以自己定义命名类型。例如: type mySlice []int 未命名类型由文字类型定义。即, []int是一个未命名的类型。 根据Go spec,每种类型都有一个底层类型: Unnamed types are defined by type literal. I.e., []int is an unnamed type. According to Go spec, there is an underlying type of every type: 每个类型T都有一个底层类型:如果T是预先声明的布尔型、数值型、字符串型或文字型中的...阅读全文

博文 2019-06-27 00:32:44 羊羽shine

golang碎片整理之反射

本文介绍go语言反射的意义和基本使用。 变量的内在机制 go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息 值信息:程序运行过程中可动态变化的。 反射的介绍 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称,类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。Go程序在运行期使用reflect包访问程序的反射信息。在上一篇博客中我们介绍了空接口。空接口可以存储任意类型的变量,那我们如何知道这个空接口保存的数据是什么呢?反射就是在运...阅读全文

博文 2019-07-07 22:03:13 霍帅兵

Bystack跨链技术源码解读

Bystack是由比原链团队提出的一主多侧链架构的BaaS平台。其将区块链应用分为三层架构:底层账本层,侧链扩展层,业务适配层。底层账本层为Layer1,即为目前比较成熟的采用POW共识的Bytom公链。侧链扩展层为Layer2,为多侧链层,vapor侧链即处于Layer2。 Vapor侧链采用DPOS和BBFT共识,TPS可以达到数万。此处就分析一下连接Bytom主链和Vapor侧链的跨链模型。 主侧链协同工作模型 1、技术细节 POW当前因为能源浪费而饱受诟病,而且POW本身在提高TPS的过程中遇到诸多问题,理论上可以把块变大,可以往块里面塞更多的交易。TPS是每秒出块数*块里面的交易数。但是也存在问题:小节点吃不消存储这么大的容量的内容,会慢慢变成中心化的模式,因为只有大财团和大机构才...阅读全文

博文 2019-07-18 15:32:47 比原链Bytom

golang笔记之接口

接口类型是对其它类型行为的抽象和概括;因为接口类型不会和特定的实现细节绑定在一起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力。 很多面向对象的语言都有相似的接口概念,但Go语言中接口类型的独特之处在于它是满足隐式实现的。也就是说,我们没有必要对于给定的具体类型定义所有满足的接口类型;简单地拥有一些必需的方法就足够了。这种设计可以让你创建一个新的接口类型满足已经存在的具体类型却不会去改变这些类型的定义;当我们使用的类型来自于不受我们控制的包时这种设计尤其有用。 在本章,我们会开始看到接口类型和值的一些基本技巧。顺着这种方式我们将学习几个来自标准库的重要接口。很多Go程序中都尽可能多的去使用标准库中的接口。 接口约定 目前为止,我们看到的类型都是具体的类型。一个具体的类型可以...阅读全文

博文 2019-05-07 13:35:09 月下独酌100

GoLang 学习笔记 - 基本数据类型

GoLang 的数据类型   在 GoLang 中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。   GoLang 有以下几种数据类型: 类型 描述 布尔 基本数据类型,只有两个值,并且只可以是常量 —— true 或者 false。 数值 基本数据类型,GoLang 支持整型、浮点型数字,并且支持复数,其中位的运算采用补码。 字符串 基本数据类型,GoLang 中 string 类型被官方定为基本数据类型,是一串由单个字节连接起来的字符序列。GoLang 字符串的字节使用 UTF-8 编码标识 Unicode 文本。 派生 派生类型包括很多种,其中有:指针、数组、结构体、管道、切片、接口...阅读全文

博文 2019-07-20 20:32:39 凉丶心园

Go学习笔记-接口(interface)的实现

对于go的接口,我们先来看看官方的解释 接口是用来定义行为的类型。这些被定义的行为不由接口直接实现,而是通过方法由用户定义的类型实现。如果用户定义的类型实现了某个接口类型声明的一组方法,那么这个用户定义的类型的值就可以赋给这个接口类型的值。这个赋值会把用户定义的类型的值存入接口类型的值 也就是说接口定义的方法,需要由具体的类型去实现它。 下面我们来看看接口的实现 在go语言中,接口的实现与struct的继承一样,不需要通过某个关键字php:implements来声明。在go中一个类只要实现了某个接口要求的所有方法,我们就说这个类实现了该接口。下面来看一个例子 type NoticeInterface interface { seedEmail() seedSMS() } type Stude...阅读全文

博文 2020-01-02 22:32:38 旧梦发癫

探索 Go 语言数据类型的内部实现

向新程序员讲解 Go 语言的时候,必要的是解释 Go 各种数据值在内存中的组织来给他们建立正确的思想,知道哪些操作是开销昂贵的,哪些是不昂贵的。这篇文章就是关于基本类型,结构,数组和切片的内部实现原理。基本类型让我们从一个简单的例子开始​图1 变量 i 的类型是 int, 在内存中用一个32比特位的字来表示。j 的类型是 int32 ,由于显示类型转换。即使 i 和 j 由相同的内存布局,他们本质上还是不同的类型:在 Go 中直接 i = j 赋值将会产生一个错误,我们必须显示的转化 j,i = int(j)。 值 f 的类型是 float,在内存中用 32 比特位的浮点值格式表示,它和 int32 有相同的内存使用量但是内部布局是不同的,感兴趣的可以去了解一个浮点数如何在内存中表示。结构体...阅读全文

Golang——数组array

数组是同一种数据类型元素的集合。 数组声明时需要确定数组大小,一旦定义,不可修改。 数组的长度必须是常量,并且长度是数据类型的一部分。[5]int和[3]int是不同的类型。 数组索引从0开始。 数组是值类型。 var 变量名 [数量]T 声明和初始化 func main() { //数组声明 var a [5]int var b [3]int //数组赋值 a = [5]int{1,2,3,4,5} b = [3]int{1} fmt.Println(a) //[1 2 3 4 5] fmt.Println(b) //[1 0 0] fmt.Printf("a:%T b:%T\n", a, b) //a:[5]int b:[3]int //数组声明又赋值 var c = [3]string...阅读全文

博文 2020-05-22 11:33:59 Cici冬雪

通过例子学习 Go 和 Rust ---- 指针

指针表示内存上的一段数据的位置、长度、类型信息。在 Go 和 Rust 里面都可以操作指针,咱用一个最简单的例子来看看它们的异同之处。 Go func zeroval(ival int) { ival = 0 } func zeroptr(iptr *int) { *iptr = 0 } func main() { i := 1 fmt.Println("initial:", i) zeroval(i) fmt.Println("zeroval:", i) zeroptr(&i) fmt.Println("zeroptr:", i) fmt.Println("pointer:", &i) } initial: 1 zeroval: 1 zeroptr: 0 pointer: 0xc00002...阅读全文

博文 2020-03-03 16:32:45 Tericoder

GO基础

声明变量:声明变量的一般形式是使用 var 关键字:var name type Go语言的基本类型(type)有:boolstringint、int8、int16、int32、int64uint、uint8、uint16、uint32、uint64、uintptrbyte // uint8 的别名rune // int32 的别名 代表一个 Unicode 码float32、float64complex64、complex128 变量声明的标准格式:var 变量名 变量类型 变量声明的批量格式:var (name1 type1name2 ) 变量声明可使用更加简短的变量定义和初始化语法。名字 := 表达式 变量初始化: 变量初始化的标准格式var 变量名 类型 = 表达式 编译器推导类型的格...阅读全文

博文 2019-11-12 19:03:21 Mirajane

《Go 语言程序设计》读书笔记(四)接口

接口概述 一个具体的类型可以准确的描述它所代表的值并且展示出对类型本身的一些操作方式就像数字类型的算术操作,切片类型的索引、附加和取范围操作。总的来说,当你拿到一个具体的类型时你就知道它的本身是什么和你可以用它来做什么。 在Go语言中还存在着另外一种类型:接口类型。接口类型是一种抽象的类型。它不会暴露出它所代表的对象的内部结构和这个对象支持的基础操作的集合;它只会展示出自己的方法。也就是说当你有看到一个接口类型的值时,你不知道它是什么,唯一知道的就是可以通过它的方法来做什么。 fmt.Printf它会把结果写到标准输出和fmt.Sprintf它会把结果以字符串的形式返回,实际上,这两个函数都使用了另一个函数fmt.Fprintf来进行封装。fmt.Fprintf这个函数对它的计算结果会被怎么...阅读全文

博文 2019-12-29 10:32:38 Kevin

4. 类型

4. 类型 下面是 Go 支持的基本类型: bool 数字类型 int8, int16, int32, int64, int uint8, uint16, uint32, uint64, uint float32, float64 complex64, complex128 byte rune string bool bool 类型表示一个布尔值,值为 true 或者 false。 package main import "fmt" func main() { a := true b := false fmt.Println("a:", a, "b:", b) c := a && b fmt.Println("c:", c) d := a || b fmt.Println("d:", d) ...阅读全文

博文 2019-08-29 11:32:56 泷汰泱

golang中接口的面向对象(一)--多态特征

最近在学习golang,虽然go并不是一个传统意义的面向对象的语言,但是发现接口interface{}这个类型却体现了一些面向对象的特点。 本人也是初学,参考了《Go 零基础编程入门教程》-- “进击的皇虫”大佬的教学。示例代码按我个人的理解稍微有所改动。有什么不妥的地方也请大家不吝赐教。 在学习golang的面向对象之前,我们先来了解一下 方法 method 和 接口 interface{}这两个类型:方法 method : 在Go 语言中,我们可以在一些接收者上定义函数,这里的接收者是 自定义类型或结构体,对应为OOP中的类,这些接收者的函数叫做方法。 方法(method)的声明和函数很相似, 只不过它必须指定接收者: func (t1 T) Func1(参数列表) 返回值类型{ ......阅读全文

博文 2020-05-29 10:33:19 roddger

Go语言笔记 | 06-基本类型

布尔类型 bool 布尔类型的值只能是常量 true 或者 false。 var b bool = true var c = false 布尔类型和数字 0,1 不能直接转换,必须通过编程实现,if 和 for 语句的条件部分都是布尔类型。 // btoi returns 1 if b is true and 0 if false. func btoi(b bool) int { if b { return 1 } return 0 } 整数类型 golang 提供了多种大小的整数类型,也区分了有符号数和无符号数。 几种确定范围的整数类型: uint8 8-bit 0 to 255 uint16 16-bit 0 to 65535 uint32 32-bit 0 to 4294967295 ...阅读全文

博文 2019-03-01 12:34:42 jianggushi

Go36-4,5,6-变量

上篇 Go语言中的程序实体包括变量、常量、函数、结构体和接口。Go语言是静态类型的编程语言,所以我们在声明变量或常量的时候都需要指定它们类型,或者给予足够的信息以使Go语言能够推导出它们的类型。 声明变量 声明变量的方式: var name string var name = "Adam" name := "Bob" // 短变量声明 第三种短变量声明只能在函数体内部使用。 知识点 类型推断 后两种在声明的同时还进行了赋值,没有显示的指定类型,而是利用了Go的类型推断。 代码重构 我们通常把“不改变某个程序与外界的任何交互方式和规则,而只改变其内部实现”的代码修改方式,叫做对该程序的重构。 代码块 在Go语言中,代码块一般就是一个由花括号括起来的区域,里面可以包含表达式和语句。 Go语言本身...阅读全文

博文 2019-01-04 00:35:19 骑士救兵

Go教程第四篇:数据类型

第四篇:数据类型 这篇文章是我们的《Golang系列教程》的第四篇文章。 下面是Go语言中的基本数据类型: bool Numberic Types int8, int16,int32,int64,int uint8,uint16,uint64,uint float32,float64 complex64,complex128 byte rune bool 布尔类型代表了一个布尔值,它要么是true要么是false。 package main import "fmt" func main() { a := true b := false fmt.Println("a:", a, "b:", b) c := a && b fmt.Println("c:", c) d := a || b fmt....阅读全文

kubernetes垃圾回收器GarbageCollector源码分析(一)

kubernetes版本:1.13.2 背景 由于operator创建的redis集群,在kubernetes apiserver重启后,redis集群被异常删除(包括redis exporter statefulset、redis statefulset)。删除后operator将其重建,重新组建集群,实例IP发生变更(中间件容器化,我们开发了固定IP,当statefulset删除后,IP会被回收),导致创建集群失败,最终集群不可用。 经多次复现,apiserver重启后,通过查询redis operator日志,并没有发现主动去删除redis集群(redis statefulset)、监控实例(redis exporter)。进一步去查看kube-controller-manager的日...阅读全文

老虞学GoLang笔记-常量

开发十年,就只剩下这套Java开发体系了 >>> 常量 常量和C#中的概念相同,在编译期被创建。因为在编译期必须确定其值,因此在声明常量时有一些限制。 其类型必须是:数值、字符串、布尔值 表达式必须是在编译期可计算的 声明常量的同时必须进行初始化,其值不可再次修改 Doc http://golang.org/doc/go_spec.html#Constants http://golang.org/doc/go_spec.html#Constant_expressions http://golang.org/doc/go_spec.html#Constant_declarations http://golang.org//doc/go_spec.html#Iota 语法 const关键字用于声...阅读全文

2019.01.27

内建变量类型 内置变量类型bool, string(u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptrbyte, runefloat32, float64, complex64, complex128(u)是unsigned代编有符号或无符号go与其他不同的类型1、uintptr go语言的指针类型2、rune 其实rune是char类型,而且是char32位3、complex 复数类型。Go语言类型转化func triangle() { var a ,b int = 3,4 var c int //go语言没有隐式强制类型转换,必须显示强制类型转换 c = int(math.Sqrt(float64(a*a+b*b))) fmt.Pr...阅读全文

博文 2019-01-27 18:34:42 Software泥瓦匠

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

golang接口使用记录

golang接口使用记录 1. 总述 接口类型是对其他类型行为的概括与抽象,Go语言的独特之在于它是隐式实现,无需申明它实现哪些接口,只要提供接口所必须的方法即可。 接口即约定 实现单词和行的计数器,考虑使用bufio.ScanWords // counter.go // 计数器 type Counter interface { Count(fileName string) error } // 单词计数 type WordCount int func (w *WordCount) Count(fileName string) error { file, err := os.Open(fileName) if err != nil { return errors.New("open file...阅读全文

博文 2020-02-24 13:32:43 进击的大只文

Go语言(十五) 反射

反射 变量介绍 变量的内在机制 类型信息,这部分是元信息,是预先定义好的 值类型,这部分是在程序运行过程中动态改变的 反射介绍 反射与空接口 空接口可以存储任何类型的变量 在程序运行时动态获取变量的类型信息和值信息,就叫反射 import ( "fmt" "reflect" ) func TestType(a interface{}) { //获取类型(静态信息) t := reflect.TypeOf(a) kind := t.Kind() switch kind { case reflect.Int: fmt.Printf("a is a int\n") a = 2 case reflect.String: fmt.Printf("a is a string\n") } fmt.Prin...阅读全文

博文 2020-04-23 16:33:23 wx5b285b48ed74e

3.2.8Golang的map

总目录:https://www.jianshu.com/p/e406a9bc93a9 Golang - 子目录:https://www.jianshu.com/p/8b3e5b2b4497 map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map的定义 语法: map[键数据类型]值数据类型 map类型的变量默认初始值为nil,需要使用make()函数来分配内存。 语法: make(map[键数据类型]值数据类型, [容量]) map的基本使用 package main import "fmt" func main() { // 定义一个map 并初始化 长度最好在初始化时就设置好 scoreMap := make(map[str...阅读全文

博文 2020-03-17 23:32:46 寒暄_HX

老虞学GoLang笔记-常量

开发十年,就只剩下这套Java开发体系了 >>> 常量 常量和C#中的概念相同,在编译期被创建。因为在编译期必须确定其值,因此在声明常量时有一些限制。 其类型必须是:数值、字符串、布尔值 表达式必须是在编译期可计算的 声明常量的同时必须进行初始化,其值不可再次修改 Doc http://golang.org/doc/go_spec.html#Constants http://golang.org/doc/go_spec.html#Constant_expressions http://golang.org/doc/go_spec.html#Constant_declarations http://golang.org//doc/go_spec.html#Iota 语法 const关键字用于声...阅读全文

go 的基本数据类型

4. 类型 下面是 Go 支持的基本类型: bool 数字类型 int8, int16, int32, int64, int uint8, uint16, uint32, uint64, uint float32, float64 complex64, complex128 byte rune string bool bool 类型表示一个布尔值,值为 true 或者 false。 package main import "fmt" func main() { a := true b := false fmt.Println("a:", a, "b:", b) c := a && b fmt.Println("c:", c) d := a || b fmt.Println("d:", d) ...阅读全文

博文 2019-04-03 18:35:09 听砜

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编程时光

Golang学习笔记--Slice

slice切片(Slice)由指针、长度、容量组成,属于引用类型,是一种基于数组的可变长数据类型,与数组array类型关系密切,其中: 1. 指针指向所引用数组的特定元素,该元素为slice的首元素,但不一定是数组的首元素 2.长度(len)为切片的长度 3.容量,从指针指向的数组的位置,到数组最后元素位置的长度 使用append可以向切片添加元素,像slice添加元素,实际上是向slice所引用的数组添加元素,如果对应数组存在空间添加,则直接添加元素,当切片所引用的数组空间已满,无法再添加元素时,则底层,会新建一个匿名数组,并将slice内的元素从旧的数组中copy到新的匿名数组,该匿名数组的大小,为slice的容量*2,slice则指向这个新的匿名数组,同时在数组中添加元素,完成appe...阅读全文

go 的基本数据类型

go 支持的数据类型 bool 类型 数字类型 有符号整型 无符号整型 浮点型 复数类型 //bool 类型//bool 表示布尔值,值为true 或者false func booltest() { x :=true y :=false fmt.Println("x",x,"y",y) } 输出:x true y false 数字类型分为:有符号整型、无符号整型、 有符号整型int 8 表示8位 有符号整型范围 -128~127 int 16 表示16位有符号整型说值范围 -32768~32767 int32 表示32 位有符号整型范围 -2147483648~2147483647 int64 表示64位有符号整型-9223372036854775808~922337203685477580...阅读全文

博文 2020-01-04 15:33:10 水滴石川1

Go语言中基本数据类型初识

在Go语言中常用的基本数据类型有如下几种: 整型 浮点型 布尔类型 复数 字符串 整型 有符号 int8 int16 int32 int64 无符号 uint8 uint16 uint32 uint64 特殊整型 uint,32位操作系统就是uint32,64位操作系统就是uint64 int,32位操作系统就是int32,64位操作系统就是int64 uintptr,无符号整型,用于存放指针 注意:在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。 进制 // 程序入口 func main() { // age = "17" // fmt.Println("Hello World") // fmt.Print("isOK") ...阅读全文

博文 2020-03-16 00:33:14 Uncle_Joker

(二) Golang变量(2) - 数据类型的基本介绍

3.程序中"+"的应用 当左右两边都是数值型时,则做加法运算 当左右两边都是字符串,则做字符串拼接 i1, i2 := 2, 4 i3 := i1 + i2 fmt.Println("加法相加", i3) str1, str2 := "wang", "peng" str3 := str1 + str2 fmt.Println("字符拼接", str3) 结果 加法相加 6 字符拼接 wangpeng 4.数据类型的基本介绍 数据类型的基本介...阅读全文

博文 2020-05-19 15:32:49 21号新秀_邓肯

【Go每日问答】数据类型及用法

在 Go 编程语言中,数据类型用于声明函数和变量。 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 Go 语言按类别有以下几种数据类型: 序号 类型和描述 1 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 2 数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。 3 字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。 4 派生类型: 包括: (a) ...阅读全文

博文 2020-03-20 10:32:51 古月