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

Golang 基础数据类型(二)

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

博文 2020-06-03 13:32:42 sunlingbot

go 回调函数

package main import "fmt" // go 回调函数 func main() { /* 高阶函数: 根据go语言函数的数据类型的特点,可以将函数作为另一个函数的参数 fun1() fun2() 将fun1函数作为fun2函数的参数: fun2函数:高阶函数 接受一个函数作为参数的参数,叫做高阶函数 fun1函数:回调函数 作为另一个函数的参数的函数,叫回调函数 */ fmt.Printf("%T\n", add) //func(int, int) int fmt.Printf("%T\n", oper) //func(int, int, func(int, int) int) int res1 := add(1, 2) fmt.Println(res1) // 3 res...阅读全文

Go语言基础:Interface

:http://xhrwang.me/2014/12/29/golang-fundamentals-8-interface.html 我们知道 Golang 中没有 class 的概念,而是通过 interface 类型转换支持在动态类型语言中常见的 鸭子类型 达到运行时多态的效果。 官方文档 中对 Interface 是这样定义的: An interface type specifies a method set called its interface. A variable of interface type can store a value of any type with a method set that is any superset of the interface. Su...阅读全文

博文 2016-09-07 01:00:01 uudou

Go语言基础:Interface

:http://xhrwang.me/2014/12/29/golang-fundamentals-8-interface.html 我们知道 Golang 中没有 class 的概念,而是通过 interface 类型转换支持在动态类型语言中常见的 鸭子类型 达到运行时多态的效果。 官方文档 中对 Interface 是这样定义的: An interface type specifies a method set called its interface. A variable of interface type can store a value of any type with a method set that is any superset of the interface. Su...阅读全文

博文 2016-09-07 00:00:01 uudou

「Go学习笔记」2.Go语言由什么组成?

文链接 https://juejin.im/post/5daad1ed6fb9a04e270fb0ee 标识符 Go语言标识符是用于标识变量、函数或任何用户自定义项目的名称(程序实体),这个标识符就类似java中的数据类型(基本数据类型、引用数据类型)。标识符有两种类别,一种是用户自定义的标识符,它作为程序的实体存在。另一种标识符成为预定义标识符,是Go语言源代码中声明的。例如: 数据类型bool(true和false)、byte、uint、uint8、uint16、uint32、uint64、int、int8、int16、int32、int64、float32、float64、string、uintptr。 内建函数名append、cap、close、complex、copy、delete...阅读全文

博文 2019-10-19 18:02:38 码处高效

4. Go 语言数据类型:byte、rune与字符串

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. byte 与 rune byte,占用1个节字,就 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main(...阅读全文

博文 2020-04-26 13:33:04 Python编程时光

8. Go 语言流程控制:if-else

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 条件语句模型 Go里的流程控制方法还是挺丰富,整理了下有如下这么多种: if - else 条件语句 switch - case 选择语句 for - range 循环语句 goto 无条件跳转语句 defer 延迟执行 今天先来讲讲 if-else 条件语句 Go 里的条件...阅读全文

博文 2020-04-30 08:32:41 Python编程时光

Golang入门2-数据类型

环境: go1.11.2 linux/amd64(Ubuntu 18.04) 注:本文内容主要来自Golang中文社区 mp.weixin.qq.com/s/xmV3yWsDc… mp.weixin.qq.com/s/h2mV1zZ_C… 前菜 因为数据类型跟变量息息相关,所以这里会先讲述Golang变量的几种声明方式。 1.var name type 比如 var i int, 表示声明了一个int类型的变量,名字为 i。这时候只是声明,并没有赋值,如果变量没有赋值,Go会自动进行赋值,而int类型的默认值为0。 2.var name type = value 第一种方式的进化,在声明变量的时候便赋予了初始值 3.var name = value(类型推断) 比如 int i = 8, 此...阅读全文

博文 2019-08-18 21:04:17 言淦

Golang 标准库:strconv 包的应用

strconv包 strconv包主要用于字符串与其他类型的转换。一般来说,几乎所有的类型都能被转换成字符串,但是从字符串转换成其他类型就不一定能成功了。 从数字类型转换到字符串,我们可以使用strconv.Itoa和strconv.FormatFloat()等函数,Itoa是把十进制数转换成字符串,FormatFloat是将64位浮点型的数字转换成字符串。 strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) 其中,fmt表示格式(其值可以是 'a', 'b', 'c'),prec表示精度,bitSize的值是32就表示float32,是64就表示float64。 从字符串到数字类型,也可以使用strconv.Ato...阅读全文

博文 2020-06-03 16:32:44 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 := jsongen....阅读全文

[BUG]int64(1.1*float64(time.Minute))会报错但其他浮点数不会

可参考stackoverflow https://stackoverflow.com/questions/47568254/why-int641-1float64time-minute-is-error-but-int641-1float64time-minute 今天写着写着发现这个活见鬼的bug,想不懂为什么 int64(1.1*float64(time.Minute)) 就编译不过,其他浮点数就可以,没想通哪里不符合类型转换条件了 而且把这句话拆开来写就pass......阅读全文

golang学习笔记

与c语法不同之处: 1. 参数列表中各个参数类型相同时可以只写出最后一个,如:add(x, y int) int { return x +y } 2. 类型在参数名(变量/函数)后面 3. 函数的左大括号要跟函数名同一行,否则编译不过 4. 函数定义要先写关键字func在函数开头(函数外的每个语句都要以func、var等等关键字开头) 5. 在包或者函数级别声明变量时要用var语句 6. 函数支持多值返回,如:func swap(x, y string) (string, string) { return y,x } 7. 函数支持命名返回值,如func split(x int) (x, y int) { ... return} 8. 初始化使用表达式时可以不用写类型,由初始值推导出类型 9...阅读全文

博文 2016-09-08 09:00:10 qq_32746725

不得不知道的golang知识点之nil

golang中的nil,很多人都误以为与Java、PHP等编程语言中的null一样。但是实际上Golang的niu复杂得多了,如果不信,那我们继续往下阅读。nil 为预声明的标示符,定义在builtin/builtin.go,// nil is a predeclared identifier representing the zero value for a// pointer, channel, func, interface, map, or slice type.// Type must be a pointer, channel, func, interface, map, or slice typevar nil Type // Type is here for the purp...阅读全文

博文 2018-07-02 12:22:16 梦朝思夕

golang:基础数据类型

基础数据类型 整型 int,uint是根据CPU平台机器字大小决定取值范围。 & 位运算 AND | 位运算 OR ^ 位运算 XOR &^ 位清空 (AND NOT) << 左移 >> 右移 默认值 var a1 int //0 var a2 float64 //0 var a3 bool //false var a4 byte //0 var a5 rune //0 var a6 []int //[] var a7 []byte //[] var a8 map[int64]int64 //map[] var a9 string //空 var a10 complex64 //(0+0i) 溢出情况 一个算术运算的结果,不管是有符号或者是无符号的,如果需要更多的bit位才能正确表示的话,就...阅读全文

博文 2018-09-07 20:34:40 super大橙子

剖析golang interface实现

[TOC] 本文基于golang 1.11源码进行分析。先演示用法和注意事项,再深入源码分析原理。 在golang中,接口本身也是一种类型,它代表的是一个方法的集合。任何类型只要实现了接口中声明的所有方法,那么该类就实现了该接口。与其他语言不同,golang并不需要显示声明类型实现了某个接口,而是由编译器和runtime进行检查。不用显示什么这点非常棒,这样就无侵入非常方便。 1 使用 1.1 声明 type 接口名 interface { 方法1 方法2 ... 方法n } type 接口名 interface { 已声明接口名1 ... 已声明接口名n } 如果一个接口不包含任何方法,那么就是一个空接口(empty interface),所有类型都符合empty interface的定义...阅读全文

博文 2018-12-26 17:34:44 123archu

go版本的排序二叉树,充足的api和注释说明

排序二叉树的介绍不多说了,本文的二叉树具有如下开放接口中的全部功能。 ```go package BTree type BTreeI interface { //if a bt contains data Contain(data interface{}) (bool, error) //get the node which has max data FindMax() (*BinaryNode, error) //get the node which has min data FindMin() (*BinaryNode, error) //insert a data Insert(x interface{}) (*BinaryNode, error) //delete a node wh...阅读全文

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));...阅读全文

golang笔记之接口(二)

接口类型具体描述了一系列方法的集合,一个实现了这些方法的具体类型是这个接口类型的实例。 io.Writer类型是用得最广泛的接口之一,因为它提供了所有类型的写入bytes的抽象,包括文件类型,内存缓冲区,网络链接,HTTP客户端,压缩工具,哈希等等。io包中定义了很多其它有用的接口类型。Reader可以代表任意可以读取bytes的类型,Closer可以是任意可以关闭的值,例如一个文件或是网络链接。(到现在你可能注意到了很多Go语言中单方法接口的命名习惯) package io type Reader interface { Read(p []byte) (n int, err error) } type Closer interface { Close() error } 再往下看,我们发现...阅读全文

博文 2019-05-07 19:34:59 月下独酌100

Golang 学习笔记七 接口

一、概念 《快学 Go 语言》第 9 课 —— 接口 1.接口定义 Go 语言的接口类型非常特别,它的作用和 Java 语言的接口一样,但是在形式上有很大的差别。Java 语言需要在类的定义上显式实现了某些接口,才可以说这个类具备了接口定义的能力。但是 Go 语言的接口是隐式的,只要结构体上定义的方法在形式上(名称、参数和返回值)和接口定义的一样,那么这个结构体就自动实现了这个接口,我们就可以使用这个接口变量来指向这个结构体对象。下面我们看个例子 package main import "fmt" // 可以闻 type Smellable interface { smell() } // 可以吃 type Eatable interface { eat() } // 苹果既可能闻又能吃 t...阅读全文

博文 2019-01-30 18:34:45 懒皮

兄弟连区块链技术培训分享Go语言之面向对象总结

互联网二十多年,已到十字路口。区块链出现前的互联网被称为古典互联网,而应用区块链技术的互联网才进入了后互联网时代。作为一项新兴的技术,区块链无疑正处于风口浪尖之上,其发展前景于普通大众而言也终将是利好。但目前由于区块链技术处于发展早期阶段,存在技术成熟度、落地应用场景有限等问题,兄弟连教育建议用户在选择专业Go语言+区块链培训机构前应进行仔细考量与辨别。type $name struct{ property01 int property02 int }Golang里面的方法和接口都是基于这里type *** struct创建的类型,这里其实可以理解为:class $name { public int property01; public int property02; }类型就是类。所以我们...阅读全文

博文 2018-08-27 15:35:21 兄弟连区块链培训

理解golang反射(reflection in Go)

反射(reflection)是指在运行时,动态获取程序结构信息(元信息)的一种能力,是静态类型语言都支持的一种特性,如Java, golang等。这里主要详细介绍golang reflection相关知识类型与接口(Types and interfaces)type MyInt int var i int var j MyInti 为int类型,j为MyInt类型。虽然i,j底层类型均为int,但它们属于不同类型,没有转换不能相互赋值。接口类型 interface, 表示一系列方法集合,任意concrete (non-interface) value 只要实现了接口方法,便可赋值给interface// Reader is the interface that wraps the basic...阅读全文

博文 2018-07-02 21:35:45 暮色伊人

Go教程第三篇:变量

Go教程第三篇:变量 本文是《Golang系列教程》第三篇文章,它主要讲解golang中变量的用法。 什么是变量 变量是一个内存位置的名称,这个内存位置是用于指定类型的值。在go语言中,有许多不同的语法来声明一个变量。 声明单一变量 声明单一变量的语法: var name type。 package main import "fmt" func main() { var age int // 变量声明 fmt.Println("my age is", age) } var age int 语句声明了一个名称为age,数据类型为int的变量。我们没有为该变量指定任何值。 如果一个变量没有指定任何值的话,go会自动地把它初始化为该数据类型所对应的零值。 在本例子中,age会被指定一个0值。如果你...阅读全文

基于空接口的go语言归并排序mergSort

//merge sort: int float32 float64 //1 divide: 中分,仅存在一个变量时不分 //2 merge: 合并子列,若一个子列为空则 //直接复制另外一个子列 //3 需要与待排序数组等大小数组 //fileName: mergeSort.go package mySort1 import ( //"fmt" "log" ) //利用空接口实现任意类型,空接口类型不存在比较 //比较需利用a.(int)将空接口转换为其他类型 //通过a.(type)可以判断空接口的实际类型 func MergeSort(arr []interface{}, low, high int) { desArr := make([]interface{}, high+1) if ...阅读全文

博文 2018-08-31 12:29:03 Beginner18

2019-05-08(杂记与知识点积累)

归纳总结一天的内容,以致于过的不盲目,该杂记用来量化每天所做的内容: 1.早起的问题差评, 明天应该继续努力,争取达到自己的一个要求。 2.完成AGV调度系统段禁用的初级版本,新增历史记录任务完成的时间。明天完成站台禁用的版本,同时更新之前的点,段,站台的禁用功能。 3.下班后两个小时的健身,锻炼部位:肩部,核心训练课程:45分钟,有氧训练:三组组合训练。 4.今天所总结并陈述的知识点:以后每天过一遍,在此书写的知识点以后绝对不能答错,可以慢,但是要稳。前一天知识点回顾个人概述: 主要过了Java的两个基础,异常与集合类。异常的总接口为Throwable,子类实现为Error:错误,主要针对的是虚拟机,内存等问题,程序猿不做处理。另外是Exception,称为异常,Exception又分为R...阅读全文

博文 2019-05-09 03:34:52 invincibleFF

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

第七章 接口

flag包,io包 fmt包 接口类型是对其他类型行为的抽象和概括,因为接口类型不会和特定的实现细节绑定在一起,通过这种抽象方式,我们可以让我们的函数更加灵活和更具有适应能力。 go语言的接口类型的特点在于,它的实现方式是隐式的,也就是说,我们没有必要对于给定的具体类型定义所有满足的接口类型;简单地拥有一些必须的方法就足够了。这种涉及可以让你创建一个新的接口类型满足已经存在的具体类型,却不会改变这个类型的定义; 基础理解:接口类型是一种抽象的类型。它不会暴露出它所代表的对象的内部值的结构和这个对象支持的基础操作的集合;它只会展示出它们自己的方法。也就是说当你有看到一个接口类型的值时,你不知道它是什么,唯一知道的就是可以通过它来做什么。 一个类型可以自由的使用另一个满足相同接口的类型来进行替换...阅读全文

博文 2018-12-06 16:34:48 zhaoxi_yu

9.笔记go语言——方法和接口

9.笔记go语言——方法和接口 方法 Go 没有类。然而,仍然可以在结构体类型上定义方法。 方法接收者 出现在 func 关键字和方法名之间的参数中。 package main import ( "fmt" "math" ) type Vertex struct { X, Yfloat64 } func (v *Vertex) Abs() float64 { returnmath.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v :=&Vertex{3, 4} fmt.Println(v.Abs()) } 执行: 5 你可以对包中的 任意 类型定义任意方法,而不仅仅是针对结构体。 但是,不能对来自其他包的类型或基础类型定义方法。 package main i...阅读全文

博文 2017-10-03 22:31:03 notbaron

Golang笔记: 结构体(struct)

结构体定义 go语言的关键字 type 可以将各种基本类型定义为自定义类型,包括整型、字符串、布尔等。结构体是一种复合的基本类型,通过 type 自定义类型进行定义。 结构体的定义格式如下: type 类型名 struct { 字段1 字段1类型, 字段2 字段2类型, ... } 说明: 类型名:标识自定义结构体的名称,在同一个包内不能重复。 struct{}:表示结构体类型,type 类型名 struct{} 可以理解为将 struct{} 结构体定义为类型名的类型。 字段1、字段2……:表示结构体字段名。结构体中的字段名必须唯一。 字段1类型、字段2类型……:表示结构体字段的类型。结构体实例化 1:基本的实例化形式;结构体本身也是一种类型,可以像基本类型一样以 var 方式声明结构体来...阅读全文

博文 2019-06-30 23:32:48 Boston199834

Go 中的 Interface 和 Reflect

基本定义Go 语言不是一种 传统 的面向对象编程语言:它里面没有类和继承的概念。而是到处充满了松耦合的类型(结构体或者基本类型)、方法对接口的实现。Go 是唯一结合了接口值,静态类型检查(是否该类型实现了某个接口),运行时动态转换的语言,并且不需要显式地声明类型是否满足某个接口。该特性允许我们在不改变已有的代码的情况下定义和使用新接口。但是 Go 语言里有非常灵活的 接口 概念,通过它可以实现很多面向对象的特性。如果某个对象实现了某个接口的所有方法,则此对象就实现了此接口type Namer interface { Method1(param_list) return_type Method2(param_list) return_type ... } 类型不需要显式声明它实现了某个接口:接...阅读全文

博文 2017-09-27 11:25:59 allenwu.itscoder.com

golang-接口

Go语言规定,只要实现了接口里面的方法,就是该接口的实现类 接口变量里面有什么? 实现者的类型 和 实现者的指针 接口变量自带指针 接口变量同样采用值传递,几乎不需要使用接口的指针 指针接收者实现只能以指针方式使用;值接收者都可以用 定义一个接口 package main import ( "fmt" "interfaces/mock" "interfaces/real" "time" ) /** Go语言规定,只要实现了接口里面的方法,就是该接口的实现类 接口变量里面有什么? 实现者的类型 和 实现者的指针 接口变量自带指针 接口变量同样采用值传递,几乎不需要使用接口的指针 指针接收者实现只能以指针方式使用;值接收者都可以用 。。。。 type Retriever struct {} ty...阅读全文

博文 2019-12-17 22:32:42 爱吃豆包

如何更好处理数据仓库服务必然需要云数据库HybridDBforPostgreSQL

课程介绍 云数据库HybridDB for PostgreSQL(ApsaraDB HybridDB for PostgreSQL)是一种在线MPP大规模并行处理数据仓库服务。云数据库HybridDB for PostgreSQL基于Greenplum Database开源数据库项目,并由阿里云深度扩展,支持OSS外部表、JSON数据类型、HyperLogLog预估分析等功能特性。通过符合SQL2008标准查询语法及OLAP分析聚合函数,提供灵活的混合分析能力。支持行存储和列存储混合模式,提高分析性能,同时支持数据压缩技术,降低存储成本。并提供在线扩容、性能监测等服务,用户无需进行复杂的大规模MPP集群运维管理,让DBA、开发人员及数据分析师专注于如何通过SQL提高企业的生产力,创造核...阅读全文

Go语言6-接口、反射

接口 接着上次的继续讲接口,先回顾一下接口的用法: package main import "fmt" // 定义接口 type Car interface { GetName() string Run() } // 定义结构体 type Tesla struct { Name string } // 实现接口的GetName()方法 func (t *Tesla) GetName() string { return t.Name } // 实现接口的Run()方法 func (t *Tesla) Run() { fmt.Printf("%s is running\n", t.Name) } func main() { var c Car var t Tesla = Tesla{"Tesla...阅读全文

博文 2018-11-04 23:35:16 骑士救兵

2.GO语言之基本数据类型,运算符

1.数据类型 Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外, 还有数组、切片、结构体、函数、map、通道(channel)等。 1.1整型 整型分为两类: 按长度分为:int8、int16、int32、int64 -对应的无符号整型:uint8、uint16、uint32、uint64 1.2特殊整型 注意: 1.在使用int和uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。 2.通过len()获取对象的长度,会根据不同平台的字节长度进行变化。 3.实际使用中,切片或map的元素数量等可以使用int表示。 4.在涉及到二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用i...阅读全文

博文 2019-12-11 10:33:17 DevOperater

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

请从github下载配套代码: https://github.com/shuningzhang/learn_golang 前面文章本号给大家介绍了基本的数据类型,表达式和函数等内容。有的时候基本的数据类型可能不能满足我们开发的需求,我们可能需要一些数据类型的组合。比如我们要把一个班级里面所有人的平均成绩存在一起,然后计算整个班级的平均成绩。大家想一下,这种情况下应该用什么类型的变量? Go语言从入门到精通-03 | 复杂数据类型 数组 接着上面我们举的例子,如果要计算平均成绩怎么办呢?这就用到了数组的概念。数组从字面上理解就是一组数,它是指类型相同的一组数。这组数在内存中是顺序存储的,因此,我们可以通过数组名字的索引来访问其中的数据,而不同定义多个变量。 图1 数组内部结构示意图 如图1是数...阅读全文

博文 2019-03-19 13:34:45 萨泥君

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...阅读全文

interface{} 接口类型

interface定义 interface(接口)是golang最重要的特性之一,Interface类型可以定义一组方法,但是这些不需要实现。请注意:此处限定是一组方法,既然是方法,就不能是变量;而且是一组,表明可以有多个方法。再多声明一点,interface本质上是一种类型,确切的说,是指针类型,此处暂且不多表,后文中自然能体会到。 Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服。 什么是interface 简单的说,interface是一组method的组合,我们通过interface来定义对象的一组行为。 interface是为实现多态功能,多态是指代码可以根据类型的具体实现采取不同行为...阅读全文

博文 2020-03-26 17:33:09 乔大叶_803e

Go语言探索 - 11(原创)

上一篇文章 主要学习了Go语言的切片以及Map。本篇文章主要学习的是Go语言中的接口、反射以及错误和异常处理。接口:回想一下,在Java中,有父类和子类的说法,父类主要是提供抽象的公共方法让子类基于此拓展自身的功能。Java还有抽象类和接口那么,在Go语言中也提供了一种数据类型,接口。GO语言的接口是把所有的具有共性的方法定义在一起,其他类型只要实现了接口内的方法就是实现了这个接口。(是不是很类似Java的接口?)GO语言定义接口的语法格式:type 接口名 interface { 接口方法();}GO语言接口实战:为了看到效果,首先我们定义一个吃东西的接口,由于中西方饮食文化的差异,我们用筷子,歪果仁用刀叉,针对这种差异我们可以定义两个结构体;我们让这两个结构体都实现吃的接口,由于接口不能...阅读全文

博文 2018-07-12 17:34:47 骑小猪看流星

Learn Golang in Days - Day 15-Go错误处理

Learn Golang in Days - Day 15-Go错误处理 简介 Go语言通过内置错误接口提供了简单的错误处理机制 error类型是一个接口类型,它的定义如下 type error interface { Error() string } 例子 package main import "fmt" import "errors" func main() { //var f = 3.4 //正确 var f float32 = -2.0 var n, err = sqrt(f) if err != nil { fmt.Printf("error, %s\n", err) return } fmt.Printf("sqrt(%f) = %f\n", f, n) } func sqrt...阅读全文

博文 2019-02-08 15:34:42 笑吧小鸟

golang 网络编程(10)文本处理

golang_real.jpg Json 处理 现在大部分我们从服务端获取数据都是Json 格式,所以对 json 格式数据处理在 web 应用开发中显得至关重要。有关 json 我想大家再熟悉不过了,这里就简单地提一句,json 就是一种轻量级的数据交换语言。尽管 json 是 javascript 的一个子集,但 json 是独立于语言的文本格式。 { "data":[ { "title":"angular base tut", "author":"zidea" } ] } 定义与上面 Json 数据对应的结构体 Tut 和 TutReponse 少写一个字母。json 数组对应 go 语言中slice。 这里结构 struct 的字段需要大写,如果 json 字段多于结构体,找不到对应...阅读全文

类型转换

1.在golang中不同类型的数据进行赋值的时候需要进行类型转换。 package main import "fmt" func main(){ var num int32 =30 var te int64 =20 //te=num //因为num何te是不同类型,所以不能赋值,需要进行类型转换之后才能赋值。 te=int64(num) fmt.Printf("num is %d\nte is %d\n",num,te) ...阅读全文

博文 2019-06-14 16:02:50 荒古遗尘狗贼

Golang的反射reflect深入理解和示例

[TOC] Golang的反射reflect深入理解和示例 【记录于2018年2月】 编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,官方自带的reflect包就是反射相关的,只要包含这个包就可以使用。 多插一句,Golang的gRPC也是通过反射实现的。 interface 和 反射 在讲反射之前,先来看看Golang关于类...阅读全文

博文 2018-10-19 18:34:42 吴德宝AllenWu

golang数据类型

关于golang基本类型的几篇文章 go语言类型 go语言基本数据类型 go语言的内置类型和内置函数以及自定义类型 golang基本类型介绍 Go语言基本数据类型和内置函数 源码在/src/builtin/builtin.go中,内容如下 package builtin // bool is the set of boolean values, true and false. type bool bool // true and false are the two untyped boolean values. const ( true = 0 == 0 // Untyped bool. false = 0 != 0 // Untyped bool. ) // uint8 is the se...阅读全文

博文 2019-03-08 11:32:06 Charliewolf

Go语言基础 - 基本数据类型

一、基本数据类型 1. 整型 uint8也就是byte型 无符号整型 取值范围 uint8 0 到 255 uint16 0 到 65535 uint32 0 到 4294967295 uint64 0 到 18446744073709551615 int16对应C语言中的short型,int64对应C语言中的long型 有符号整型 取值范围 int8 -128 到 127 int16 -32768 到 32767 int32 -2147483648 到 2147483647 int64 -9223372036854775808 到 9223372036854775807 a. 特殊整型 在使用int和uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上...阅读全文

博文 2020-04-08 22:32:41 不留烦

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

golang 类型转换

1 import ( 2 "bytes" 3 "encoding/binary" 4 "encoding/gob" 5 "fmt" 6 ) 7 8 func str_to_byte(src string) []byte { 9 //strSlice := []string{src} 10 buffer := &bytes.Buffer{} 11 gob.NewEncoder(buffer).Encode(src) 12 return buffer.Bytes() 13 } 14 15 func uint64_to_byte(src uint64) []byte { 16 buf := make([]byte, 8) 17 binary.BigEndian.PutUint64(buf, src...阅读全文

博文 2018-06-02 16:30:01 chris-cp

go基本类型使用细节

整型的使用细节 Golang 各整数类型分:有符号和无符号 ,int uint的大小和系统有关。 Golang 的整型默认声明为int型 var n1 = 100 fmt.Printf('n1的数据类型%T',n1) 如何在程序查看某个变量的字节大小和数据类型(使用较多) var n2 int64 = 10 fmt.Printf('n2的 数据类型 %T n2占用的字节数是 %d',n2,unsaft.Sizeof(n2)) 浮点型使用细节 Golang 浮点类型有固定的范围和字段长度,不受具体OS(操作系统)的影响。 Golang 的浮点型默认声明为float64 类型。 浮点型常量有两种表示形式 十进制数形式:如:5.12 .512 (必须有小数点) 科学计数法形式:如:5.1234e2...阅读全文

博文 2019-01-03 18:34:44 StevenQin

Learn Golang in Days - Day 13

Learn Golang in Days - Day 13 简介 递归 递归,就是自己调用自己 Go语言支持递归 类型转换 递归的应用 package main import "fmt" func Factorial(n uint64)(result uint64) { if(n > 0) { result = n * Factorial(n-1) } return 1 } func main() { var i int =15 fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(uint64(i))) } 斐波那契数列 通过Go语言的递归函数实现斐波那契数列 package main import "fmt" func fibonacci(n int) int ...阅读全文

博文 2019-02-07 01:34:43 笑吧小鸟

Golang学习笔记-1.4 数据类型

本文系第四篇Golang语言学习教程 在Go语言中,数据类型用于声明函数和变量。 Go语言按类别有以下几种数据分类 序号 类型 描述 1 bool bool类型表示一个布尔值,值为true或false 2 数字类型 整型int和浮点型float32、float64.Go支持整型和浮点型数字,并且原生支持复数。 3 字符串类型 一串固定长度字符连接起来的序列,Go语言中字符串由单个字节连接起来,使用UTF-8编码标识Unicode文本。 4 派生类型 包括:(a) 指针类型(Pointer) (b) 数组类型(c) 结构化类型(struct)(d) Channel 类型(e) 函数类型(f) 切片类型(g) 接口类型(interface)(h) Map 类型 bool bool类型表示一个布尔...阅读全文

博文 2018-07-05 21:35:02 xunk1900

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 凉丶心园