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

类型和类

golang里常规的类定义一般为如下形式: type $name struct{ property01 int property02 int } func (t * name) tfunc() {} 这里一直有个 误解:struct充当了其他语言中的class关键字 其实在Golang里,类型就是类,所以我们说是类型的某个方法,类型实现了某个接口。 以上定义应当解读为 property01是struct类型(别名name)的一个属性,tfunc是struct类型(别名name)的一个方法 实际上method的定义可以依赖于所有的自定义类型。所谓自定义类型,就是通过type语句给一些内置类型起了个"别名"后所定义的新类型。 type Sex string func (s *Sex) chang...阅读全文

博文 2019-03-04 17:34:45 Linrundong

【golang】 关于对象,接口讲解

GO 对于 “对象”的解释 一:在Go语言中,你可以给任意类型 ,添加相应的方法, type Integer int func (a Integer) Less(b Integer) bool { return a < b } 在这个例子中,我们定义了一个新类型Integer,它和int没有本质不同,只是它为内置的 int类型增加了个新方法Less()。 这样实现了Integer后,就可以让整型像一个普通的类一样使用: func main() { var a Integer = 1 if a.Less(2) { fmt.Println(a, "Less 2") } } GO 对于 “接口”继承的解释 二:在Go语言中,只需要实现了接口要求的所有函数,我们就说实现了该接口。 type IFil...阅读全文

博文 2020-01-17 17:32:40 阿阿阿黄

golang 基础(29) 接口

square-gopher.png 在 go 语言接口更重视使用者,使用者是否承认和使用接口才是重要的,这里定义 Retriever 接口提供 Get 方法,所有具有 Get 方法的都可以认为是接口 package main import ( "fmt" "com.zidea/util/mock" ) type Retriever interface{ Get(url string) string } func download(r Retriever) string { return r.Get("www.baidu.com") } func main() { var r Retriever r = mock.Retriever{"this is fake baidu com"} fmt....阅读全文

博文 2019-04-03 08:34:39 zidea

2019回顾篇

19年在nginx,redis,mysql,golang,php方面有了自己的领悟,但是感觉一眼看去又道不出所以然,感觉是不是要总结点什么了,以后技术方案选型时候才能清晰的道出所以然。 nginx nginx深入配置篇章教程 看了很多nginx配置文章,还是以实际场景来划分把 0.了解nginx的模块划分的配置结构思想 1.分别以tcp和unix的通讯方式配置 nginx + php-fpm 2.nginx配置静态资源服务器 3.nginx配置location根据不同的路径进行转发到不同项目目录 4.ngixn配置负载均衡(ip模式,权重模式...) 5.nginx 并发场景优化 nginx 结构分析篇 ... #全局块。 events { #events块 ... } http #http...阅读全文

Go reflection详解

此篇文章引自https://juejin.im/post/5a75a4fb5188257a82110544#heading-13 编程语言中反射的概念   在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,官方自带的reflect包就是反射相关的,只要包含这个包就可以使用。 多插一句,Golang的gRPC也是通过反射实现的。 interface 和...阅读全文

博文 2019-03-08 12:34:42 北春南秋

golang 结构体

一个结构体类型可以包含若干个字段,也可以不包含任何字段。空结构体可以关联上一些方法,从而看成是函数的特殊版本。 demo1: // AnimalCategory 代表动物分类学中的基本分类法 type AnimalCategory struct { kingdom string // 界 phylum string // 门 class stirng // 纲 order string // 目 family string // 科 genus string // 属 species string // 种 } function (ac AnimalCategory) String() string { return fmt.Sprintf("%s%s%s%s%s%s", ac.kingdo...阅读全文

博文 2018-10-02 18:34:37 one_zheng

Golang之旅3-基本数据类型

基本数据类型 GO语言中的数据类型十分丰富,包含:整型、浮点型、布尔型,还有数组、切片、结构体、函数、map、通道chanel等 go基本数据类型 整型 无符号整型 uint8:,0到255 uint16:,0到65535 uint32 uint64 有符号整型 int8:-128到127 int16:-32768到32767 int32 int64 其他数字类型 uint:32/64位系统上就是uint32/uint64 int:32/64位系统上就是int32/int64 uintptr:无符号整型,用于存放一个指针 注意: 在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。 获取对象的长度的内建len()函数返回的长度可以...阅读全文

博文 2019-10-19 01:32:43 aside section ._1OhGeD

Go 之 interface接口理解

go语言并没有面向对象的相关概念,go语言提到的接口和java、c++等语言提到的接口不同,它不会显示的说明实现了接口,没有继承、子类、implements关键词。go语言通过隐性的方式实现了接口功能,相对比较灵活。 interface是go语言的一大特性,主要有以下几个特点: interface 是方法或行为声明的集合 interface接口方式实现比较隐性,任何类型的对象实现interface所包含的全部方法,则表明该类型实现了该接口。 interface还可以作为一中通用的类型,其他类型变量可以给interface声明的变量赋值。 interface 可以作为一种数据类型,实现了该接口的任何对象都可以给对应的接口类型变量赋值。 下面是一些代码示例 接口实现 package main i...阅读全文

博文 2019-10-08 18:02:40 guyan0319

golang的interface

1.golang的interface设计 golang的interface设计,从是否有方法的角度,分为iface和eface。然后所有的interface内又包含type和value,其中type包含都是结构体rtype,且都继承自接口Type。 不同的是,对与纯值interface,eface来说,type就是rtype类型,对于有方法的interface,iface来说,type是用itab来表示。 itab是运行时虚表,目的是支持golang的接口自动继承特性,其中的interfacetype为包含imethod的虚表,类型断言时比较的就是itab。 2.golang的interface底层实现(1.10.3)。 先看接口的底层实现,,在runtime中还有一份实现,暂时还不明白空接...阅读全文

博文 2019-03-11 19:34:46 黑魔术师

golang 基础(20) 接口

square-gopher.png interface.jpg 接口 什么是 interface 提到接口,我们会联想到汽车的接口,也就是让司机如何操作汽车按自己意愿使用,用户界面也是接口,会联想到很多很多。接口看了很多,对初学者比较难理解,但是一旦理解了并可以灵活运用了,接口 power 还是很大的。 接口可以理解是规范、协议、用户使用手册和对类型抽象,对行为描述。说了这么一大堆还需要您自己了解。 In object-oriented programming, a protocal or interface is a common means for unrelated objects to communicate with each other wikipedia 上面的话摘字 wiki...阅读全文

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

golang反射

反射让我们能在运行期间弹指对象的类型信息和内存结构,甚至还能访问隐藏属性。 类型 获取对象类型 t.Name是真实类型 t.Kind是基础结构类型 package main import ( "fmt" "reflect" ) type B func(int) int func main() { var b B t := reflect.TypeOf(b) fmt.Println(t.Name(), t.Kind()) // B func } 构建对象 package main import ( "fmt" "reflect" ) func main() { a := reflect.ArrayOf(1, reflect.TypeOf(byte(0))) m := reflect.MapOf...阅读全文

Go语言学习笔记04--特殊函数&工程化结构&数组&随机数

1.匿名函数 go语言中的函数都是声明在函数之外的,并不存在函数内声明函数的问题 但是也会存在一些特殊情况,在这写情况中允许在函数内部去再次定义一个函数。 这种情况下,在函数内部定义的函数就必须遵守一些go语言定义的特殊规则。 而这些内部的函数,被统称为:匿名函数。 func main (){ func (..){..} } (1)对于go语言中的匿名函数而言,由于其不存在函数名,无法使用传统函数的调用功能 所以如何调用匿名函数就必须从两个角度出发来解决问题。 1)利用函数指针,完成匿名函数的"重命名",然后再次调用 func main(){ fpointer := func (num int)int{ return num+10; } fmt.Println(fpointer(100));...阅读全文

[Go 教程系列笔记]多态-Go中的OOP

Go 教程系列笔记 Interface 第一部分 Go 教程系列笔记 Interface 第二部分 Go 教程系列笔记 并发介绍 Go 教程系列笔记 goroutine(协程) Go 教程系列笔记 Channel 通道 Go 教程系列笔记 缓冲通道和工作池 Go 教程系列笔记 Select Go 教程系列笔记 Mutex(互斥锁) Go 教程系列笔记 结构而不是类-Go中的OOP Go 教程系列笔记 组合而不是继承-Go 中的 OOP Go 教程系列笔记 多态-Go 中的 OOP Go 中的多态性是在接口的帮助下实现的。正如我们已经讨论过的,接口可以在Go 中隐式实现。如果类型定义了接口中声明的所有方法,则类型实现接口。让我们看看在接口的帮助下如何在Go中实现多态性。 使用接口的多态性 任何...阅读全文

博文 2019-08-14 17:02:52 xfstart07

浅谈Go类型转换之间的那些事

#### 试着答一答这些问题 ##### s[i]和(for _,v range)的v的区别是什么 ```go var s string = "AB" fmt.Println(reflect.TypeOf(s[0])) for _, v := range s { fmt.Println(reflect.TypeOf(v)) } ``` ##### a.(),和 a(b) 的区别是什么? ```go var v interface{} = 1 var s uint8 = 1 temp1 := int(s) temp2 := v.(int) fmt.Println(temp1,temp2) ``` #### Go的类型系统了解 ##### Go的类型 Go语言是一门静态编译型语言,是一门强类型语...阅读全文

博文 2020-01-02 09:31:19 SunPengWei

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

golang程序的基本结构和基本数据类型

1.文件名,关键字和标识符 每个golang程序的源文件都是以.go为后缀结尾 golang有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 标识符使用字母数字下划线,且必须以字母或下划线开头的字符串序列 另外golang中还预定义了35个标识符 append, bool, byte, cap, close, complex, complex64, complex12 copy, f...阅读全文

博文 2019-04-02 23:34:38 孤风追影

golang笔记之数据类型

基础数据类型 整形、浮点数、复数、布尔型、常量 复合数据类型 slice、数组、map、struct slices使用注意点: slice与数组的区别为在声明时不需要指定长度。 数组的初始化 var a [4]int slice的初始化 var s []byte Slices hold references to an underlying array, and if you assign one slice to another, both refer to the same array. Slice持有一个潜在的数组,如果你将一个slice赋值给另一个slice,那么两个slice有共同的数组。 重新分片一个slice不会拷贝此slice的内部数组。当只使用数据量比较大的sclice的一...阅读全文

博文 2019-05-05 21:34:58 月下独酌100

golang 加载ini风格配置文件

# parseIni 工具包 ## 用于引入ini配置文件,加载ini风格配置文件。 ## 特性 ### 1) 如果以 ; 、 # 、// 出显在行首,则认为是配置文件的注释 ### 2) 支持读配置文件的某项值后,进行类型转换 #### 主要支持以下几种类型转换: String、Int、Int64、Float64、 ## INI演示文件(DEMO) ``` environ = develop pi = 3.1415 isCache = 1 [mysql] host = localhost dbname = api user = root passwd = abc123456" port = 3306 [省会] 河北 = Shi Jia Zhuang 辽宁= '沈阳' 湖南 = "长沙" 吉...阅读全文

博文 2019-01-29 12:47:50 gongwalker

Rust 从基础到实践(9) 特征(上)

rust_logo.jpg 这些天主要学习 golang 和 typescript,所以接触很多有关接口的概念,也加深了我对接口的理解。今天我们看一看在 Rust 中是如何定义接口和如何实现接口。接口可以提供对行为抽象,让不同类型共享相同的抽象行为。不过在Rust这里是用关键字trait而不是interface来定义接口,不知道接口在 Rust 中使用和应用和其他语言还有什么不同,而是仅仅就是名字不同。 trait 定义 pub trait Summary { fn summarize(&self) -> String; } 接下来定义要实现特征的类别,我们需要对 Article 进行一个概要summerize的方法。 pub struct Article { pub title: Stri...阅读全文

博文 2019-03-30 18:34:39 zidea

golang fmt(格式换 I O接口)

基本模式 fmt 方法可以大致分为 print, scan两类, 根据基础方法可以构建特定方法。 Print 将参数写入字符串或io.writer scan 从字符串或 io.Reader 读取指定数据, 并输出 Print Print 方法的几种模式 基础模式: [name] Print 返回默认格式化的字符串 写入模式: F[name] 返回写入字节 例如: Fprint 字符模式: S[name] 返回字符 例如: Sprint 模板模式: [name]f 根据模板格式化 例如: Printf 换行模式: [name]ln 输出后带换行 例如: Println 模式可组合, 例如 Fprintf, Sprintf Print 默认格式化,返回字符串 func Print(a ...in...阅读全文

Go语言从入门到精通-03 | 复杂数据类型

有的时候基本的数据类型可能不能满足我们开发的需求,我们可能需要一些数据类型的组合。比如我们要把一个班级里面所有人的平均成绩存在一起,然后计算整个班级的平均成绩。大家想一下,这种情况下应该用什么类型的变量? 数组 接着上面我们举的例子,如果要计算平均成绩怎么办呢?这就用到了数组的概念。数组从字面上理解就是一组数,它是指类型相同的一组数。这组数在内存中是顺序存储的,因此,我们可以通过数组名字的索引来访问其中的数据,而不同定义多个变量。 图1 数组内部结构示意图 如图1是数组内部结构的示意图,我们可以通过数组的索引访问数组内部的数据。通常数组的索引是从0开始的,0表示第一个元素。下面我们给出一个Go语言的具体示例: 上面数组数量,如果有初始化的情况下可以不必指定大小,此时编译器会根据初始化的数据数...阅读全文

博文 2019-03-21 15:35:14 qq5c822f9bb7f5c

从零学习 Go 语言(06):数据类型之字典与布尔类型

**系列导读 ** [从零学习 Go 语言(01):一文搞定开发环境的搭建](https://studygolang.com/articles/27365) [从零学习 Go 语言(02):学习五种变量创建的方法](https://studygolang.com/articles/27432) [从零学习 Go 语言(03):数据类型之整型与浮点型](https://studygolang.com/articles/27440) [从零学习 Go 语言(04):byte、rune与字符串](https://studygolang.com/articles/27463) [从零学习 Go 语言(05):数据类型之数组与切片](https://studygolang.com/articles/2...阅读全文

博文 2020-03-30 10:53:55 hello_wbm

go语言碎片整理之接口

接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口类型 在Go语言中接口(interface)是一种类型,是一种抽象的类型。interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类型。 为什么要使用接口 package main import ( "fmt" ) type Cat struct{} func (c Cat)Say() string{ return "喵喵喵" } type ...阅读全文

博文 2019-06-27 01:03:08 霍帅兵

面向接口 - day 3

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

【低门槛Golang教学】一、断言

一、前言 由于掌握的开发技能多种多样(Node、Lua、Golang、PHP、C#、Python),导致公司基础平台项目一直难以开展。 终于再三取舍之下选择了 'Golang' 这个新秀语种,因为 'Golang' 非常契合本人的简洁风格,所以日后除了'Laravel' 相关的教程以外,'Golang' 的教学将会成为最主要输出。 二、说明 本文的主题是 接口类型断言 (assert),阅读后文的必要前提是你已经对 'Golang' 有了一定了解。 后文同样假设你已经搭建好了 'Golang' 的开发环境。 二、开始 接口类型断言 (assert) 的基本语法如下: # x:任意一个interface # y:断言结果类型名称 # z:用y类型断言x接口后结果 z := x.(y) 显然,上...阅读全文

博文 2019-03-16 18:34:41 我爱余倩

Go基础系列:接口类型断言和type-switch

接口类型探测:类型断言 接口实例中存储了实现接口的类型实例,类型的实例有两种:值类型实例和指针类型实例。在程序运行过程中,接口实例存储的实例类型可能会动态改变。例如: // ins是接口实例 var ins Shaper // ins存储值类型的实例 ins = c1 // 一段时间后... ... // ins存储指针类型的实例,存储的类型发生改变 ins = c2 // 一段时间后... // ins可能存储另一个类型实例 ins = s1 所以,需要一种探测接口实例所存储的是值类型还是指针类型。 探测的方法是:ins.(Type)和ins.(*Type)。它们有两个返回值,第二个返回值是ok返回值,布尔类型,第一个返回值是探测出的类型。也可以只有一个返回值:探测出的类型。 // 如果i...阅读全文

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

高效生成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进阶:反射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 大彬

golang 基础(18)字符串

square-gopher.png 字符串 immutability 字符串是不可变类型 strigs 标准库提供字符串基本操作 strconv 字符串与其他类型的转换 func main() { var c byte = 'H' fmt.Println(c) mj := string(45) fmt.Println(mj) } 我们尝试输出c byte = 'H'``和string(45)`` 72 - 结果可能预期有些差别,如果我们将```mj := string(72)`` 我们就会得到 72 H 在 go 语言会将 sybmol(符号)看作数字,而将string是作为sybmole 的数组 "hello world" 在 go 眼里是数组[72 101 100 108 111...]...阅读全文

永续合约是交易所布局高粘度生态体系的关键

数字货币交易所的盈利模式相对来说比较简单,交易类型也不复杂。近几年,大批交易所应运而生,现如今交易所都是以交易流量来进行盈利(维持生计)。当市场波动性不是特别大的时候,用户交易频次就会降低,就会迫使交易所必须找寻一件途径放大市场波动性,增大投资属性,从而为交易所带来流量(用户)与盈利点。合约恰好符合这一特性,而在合约中永续合约的杠杆倍数更高,就会将市场波动性放大到和杠杆等比的倍数,波动性更大,能够给交易所带来流量和资金,因而永续合约备受交易所青睐。​​永续合约的特点:1、永续合约不会交割,可以一直持有,比较适合做长线的投资者,也能节省由于交割带来的手续费。永续合约的杠杆可选择范围也是比较大,可以从1到100倍。2、在标记场内价格的同时,实时调取、计算全球主流交易所现货价格作为指数价格参考,综...阅读全文

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波

11.Go语言基础之接口

接口定义了一个对象的行为规范,接口只定义规范不实现,由具体的对象来实现规范的细节。 1.1接口类型 在Go语言中,接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,是duck-type programming的一种体现。 接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,就是洗衣机。不关心属性(数据),只关心行为(方法)。 在Java中,也是有接口的概念的。 1.2为什么要使用接口 package main import "fmt" type Cat struct {} func (c Cat) say() string { return "喵喵喵" } type Dog struct {} func (d Dog) ...阅读全文

博文 2020-02-06 17:33:20 DevOperater

从零学习 Go 语言(05):数据类型之数组与切片

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 **系列导读 ** [从零学习 Go 语言(01):一文搞定开发环境的搭建](https://studygolang.com/articles/27365) [从零学习 Go 语言(02):学习五种变量创建的方法](https://studygolang.com/articles/27432) [从零学习 Go 语言(...阅读全文

博文 2020-03-27 12:21:25 hello_wbm

Go36-13-结构体及其方法

结构体及其方法 结构体类型表示的是实实在在的数据结构。一个结构体类型可以包含若干个字段,每个字段通常都需要有确切的名字和类型。 结构体类型也可以不包含任何字段,这样并不是没有意义的,因为我们还可以为这些类型关联上一些方法,这里你可以把方法看做是函数的特殊版本。 方法和函数不同,它需要有名字,不能被当作值来看待,最重要的是,它必须隶属于某一个类型。方法所属的类型会通过其声明中的接收者(receiver)声明体现出来。 方法隶属的类型其实并不局限于结构体类型,但必须是某个自定义的数据类型,并且不能是任何接口类型。 方法的使用 接收者声明就是在关键字func和方法名称之间的那个圆括号包裹起来的内容,其中必须包含确切的名称和类型字面量。这个接收者的类型其实就是当前方法所属的那个类型,而接收者的名称,...阅读全文

博文 2019-01-09 20:35:15 骑士救兵

Java零基础入门

课程介绍 本课程主要讲解JavaSE的发展历史,JDK开发环境的搭建,CLASSPATH属性作用,Java程序基本结构、基本数据类型的划分及使用、程序结构、方法的定义与使用,本课程是作为Java系列课程的初期课程,掌握本课程之后可以继续学习Java高级开发部分。 课程目标 • 掌握java基础 适合人群 • 0起点学员 课时列表 • 课时1:【Java摸底自测】10道题测测你的Java底子 • 课时2:Java简介(Java发展概述) • 课时3:Java简介(Java主要特点) • 课时4:JDK的安装与配置 • 课时5:第一个Java程序 • 课时6:CLASSPATH环境属性 • 课时7:Java程序基本...阅读全文

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之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

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笔记: 接口(interface)

Go语言不是一种“传统”的面向对象编程语言,它里面没有类和继承的关系。但是Go语言通过灵活的接口概念,可以实现很多面向对象的特性,不同于其他语言的接口概念,GO语言的接口独特在满足隐式实现(没必要给具体类型定义所有满足的接口类型)。接口声明: 接口声明格式 说明:接口类型名,使用 type 将接口定义为自定义类型名,在类型名结尾加 er 注:Go语言的每个接口中的方法数量不会很多。Go语言希望通过一个接口精准描述它自己的功能,而通过多个接口的嵌入和组合的方式将简单的接口扩展为复杂的接口。接口的实现条件 如果一个任意类型 T 的方法集为一个接口类型的方法集的超集,则我们说类型 T 实现了此接口类型。T 可以是一个非接口类型,也可以是一个接口类型。实现关系是隐式的,没有类似与 implement...阅读全文

博文 2019-07-07 17:32:40 Boston199834

Go 语言学习笔记 -第7章

Go 语言学习笔记 -第7章 Go 语言学习笔记 -第7章 接口 Golang接口注意事项 接口 package main import ( "fmt" ) //Usb 声明 //接口体现多态、高内聚低耦合思想 type Usb interface { //声明两个没有实现的方法 //根据方法来判断 Start() Stop() } //手机 type Phone struct { } //让Phone实现Usb接口的方法 func (p Phone) Start() { fmt.Println("手机开始工作...") } func (p Phone) Stop() { fmt.Println("手机停止工作...") } //照相机 type Camera struct { } //让C...阅读全文

博文 2020-01-29 14:32:37 王知晓

golang操作mysql

import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "strings" ) // 定义要被查询的结构体 // 字段和数据库基本一致 type Email struct { Id int UserId string Email string Subscribe sql.NullInt64 // Subscribe 字段可能为null 所以使用sql.Null 开头的类型作为字段类型定义 } func main() { // 数据库连接: 格式为: 用户名:密码@tcp(IP:端口)/库名?charset=utf8 path := strings.Join([]string{"root", ":", "123", "@...阅读全文

博文 2019-06-27 10:02:42 五知小白羊

从插入排序来理解 Go 的接口

插入排序 根据插入排序的思想,我们很容易就可以完成插入排序的代码如下。 func insertionSort(data []int) { lo, hi := 0, len(data) - 1 for i := lo + 1; i < hi; i++ { for j := i; j > lo && data[j] < data[j-1]; j-- { data[j], data[j-1] = data[j-1], data[j] } } } 复制代码我们可以验证一下,确实没有问题。 package main import ( "fmt" ) func main() { nums := []int{2, 3, 4, 1, 7, 9, 10, 21, 17} insertionSort(nums)...阅读全文

博文 2019-12-03 11:34:19 咔叽咔叽

深入理解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 孤雨

请问各位大神 []interface {}提取数据问题【已解决】

``` [stdl.qq.com 123.125.110.27 80] ``` 此数据类型是 []interface {} 请问如何转提取stdl.qq.com的哪些数据?代码如下 ![image.png](https://static.studygolang.com/200311/75dfeaee65a0c194248c3c84493a82f8.png) 解决代码如下 ``` rr := make(map[string]interface{}, 0) if resp.StatusCode() == 200 { err := json.Unmarshal(resp.Body(), &rr) if _, courseName := rr["results"]...阅读全文

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

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

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

GoLang 学习笔记 - 常量

常量   常量是在程序运行时不会被修改也不可修改的量。在GoLang 中,常量的数据类型只可以是布尔型、数值型(整数型、浮点型和复数)和字符串,通常用下划线分隔大写字母来命名常量。   GoLang 中常量的定义格式: const A string = "a" // 显式类型定义 const B = "b" // 隐式类型定义   多个相同类型的声明可以简写为: const NUM_1, NUM_2 = 3, 4   常量还可以用作枚举(枚举篇会讲): const ( Unknown = 0 Female = 1 Male = 2 ) iota   iota,特殊常量,可以认为是一个可以被编译器修改的常量,通常用作常量计数器。   iota iota 每次出现都会初始化为 0,const 中...阅读全文

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

Golang学习笔记-接口和错误

接口 Go接口定义了方法后,其它类型只要实现了这些方法就是实现了接口。 type Person interface { speak() } type Student struct { } type Worker struct { } func (student Student) speak(){ println("I am student") } func (worker Worker) speak(){ println("I am worker") } func main() { var person Person person=Worker{} person.speak()//I am worker person=Student{} person.speak()//I am studen...阅读全文

博文 2019-09-27 23:32:44 aside section ._1OhGeD

ARTS 第22周

ARTS 第22周分享 [TOC] Algorithm 274. H-Index [medium] [题目描述] Given an array of citations (each citation is a non-negative integer) of a researcher, write a function to compute the researcher's h-index. According to the definition of h-index on Wikipedia: "A scientist has index h if h of his/her N papers have at least h citations each, and the other N −...阅读全文

go语言杂谈----接口的内存布局

1. 接口的功能 接口是用来定义行为的类型。这些被定义的行为不由接口实现,而是通过方法由用户定义的类型实现。 如果用户定义的类型实现了某个接口声明的全部方法,那么这个用户定义的类型的变量就可以赋给这个接口类型的变量。 用户定义的任何类型都可以实现接口,所以对接口类型变量的调用就可以形成多态调用。 2. 接口变量的内存布局 我们先看下面一个使用接口的小例子: package main import "fmt" // 自定义接口 type notifier interface { notify() } // 定义一个多态调用的函数 func sendNotification(n notifier) { n.notify() } // 自定义类型 type user struct { name s...阅读全文