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

Golang 之区分类型别名与类型定义

一、类型别名type byte=uint8type rune=int32二、区别类型别名和类型定义// 自定义类型myInt,基本类型是inttype myInt int//将 int 类型取一个别名intAliastype intAlias = intfunc main() { var a myInt //声明 a变量为自定义 myInt 类型 fmt.Printf("a Type: %T, value: %d\n", a, a) // 输出 a 的类型和默认值 var b intAlias //声明 b变量为 intAlias 类型 fmt.Printf("b Type: %T, value: %d\n", b, b) // 输出 b 的类型和默认值 }== 输出结果 == a Type...阅读全文

博文 2019-08-11 17:02:43 Caesar_fbc8

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

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 听砜

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

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

高效生成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....阅读全文

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的JSON解析

之前一直写一些动态语言,觉得解析JOSN还是很简单的,往往只需要几行代码就能拿到解析好的JSON对象。Go语言自带的json包可以让你在程序中方便的读取和写入 JSON 数据。生成JSON场景相对简单一些,json.Marshal()会根据传入的结构体生成JSON数据。解析JSON会把数据解析到结构体中,由于JSON格式的自由组合的特点,尤其是那些结构复杂的JSON数据对新手来说声明接受JSON数据的结构体类型就会陷入不知从何下手的困扰。 最近工作中由于要解析JS和PHP程序持久化的JSON数据,大概花了两个下午才搞清楚针对常见的JSON数据应该如何声明结构体类型,下面分别说明一下。 解析简单JSON package main import ( "fmt" "encoding/json" "...阅读全文

博文 2019-07-17 14:36:20 kevinyan

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

算法总结-自定义函数数组转int

如何将数组中的所有元素按照顺序转化成一个int类型的值。 列如:[]int{1,5,9,8}转成 1598 int类型。不能使用数据类型转换。 Golang实现 package main func main() { arr := []int{1, 5, 9, 8} fmt.Printf("array2int =%d \n", array2int(arr)) } func array2int(arr []int) (result int){ base := 1 for i:=len(arr) - 1; i>=0; i-- { result += arr[i] * base base *= 10 } return } PHP实现 阅读全文

博文 2019-02-21 19:34:43 臣孓

golang-101-hacks(20)——接口

接口是由若干方法组成的引用类型,包含了接口的所有方法的类型被认为自动实现了该接口类。通过接口,您可以更加体会到面向对象编程。如下所示: package main import "fmt" type Foo interface { foo() } type A struct { } func (a A) foo() { fmt.Println("A foo") } func (a A) bar() { fmt.Println("A bar") } func callFoo(f Foo) { f.foo() } func main() { var a A callFoo(a) } 运行结果如下 A foo 让我们具体分析一下代码 type Foo interface { foo() } 上面的接...阅读全文

博文 2019-06-21 23:32:44 羊羽shine

Go36-4,5,6-变量

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

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

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息事

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笔记-常量

开发十年,就只剩下这套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关键字用于声...阅读全文

Golang笔记: 接口(interface)

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

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

golang碎片整理之反射

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

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

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

Golang的map数据类型

知识点预览 1.什么是map 2.map的定义 3.map的注意事项 4.map的增删改查 5.map的遍历 6.map的切片 7.map切片的细节 /*1.为什么要用到map咧?已经是有了数组和切片的类型, map的表现形式是key->value形式,由于数组的key只能是整形的类型 并不适合类似于字典这样的需求,因此需要map来解决这种场景 */ //定义方式1:定义然后make后再赋值 var 变量名 map[keytype]valuetype 变量名 = make(map[keytype]valuetype,len) 变量名[key] = value //定义方式2:定义同时分配空间 变量名 := make(map[keytype]valuetype) 变量名[key] = valu...阅读全文

博文 2019-06-26 11:32:45 江江简书

golang面对对象编程

## golang面对对象编程 特点:继承/封装/多态 - 封装:通过方法实现 - 继承:通过匿名字段实现 - 多态:通过接口实现 1. 匿名字段 ``` type Person struct { code int //编码 sex byte //性别 name string //姓名 age int //年龄 } type Student struct { Person class string addr string } func main() { s1 := Student{Person: Person{code: 1, sex: 1, name: ""}, class: "一(2)班"...阅读全文

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笔记之接口

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

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

老虞学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关键字用于声...阅读全文

来参加NULS2.0造链黑客马拉松,赢近50万美元奖励!

NULS核心团队于2019年7月8日,正式开启了NULS2.0的全球公测,并同步推出了10分钟造链产品NULS Chain Box。为了丰富NULS模块仓库,满足更多应用场景需求,激励开发者参与体验造链,NULS核心团队发起了基于NULS2.0造链的全球黑客马拉松。本次大赛奖励丰厚,总值近50万美元。区块链的赛道上惊喜与挑战并存,我们希望每一个渴求创新与创造,并享受创造所带来成就感的开发者,都可以来参与本次大赛,成为领跑者赢取丰厚奖励。另外,如果您推荐开发者参与本次大赛,也能获得推荐人奖励。大赛规则 大赛时间2019年7月8日——2019年8月20日参赛作品要求1、基于NULS2.0的微服务架构,开发能够实现具体应用场景的模块,或者基于NULS2.0开发支持区块链生态的扩展模块,开发完成的模...阅读全文

博文 2019-07-10 17:03:06 NULS社区

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 学习笔记之字符串

golang 中字符串相关操作用得最多的基础库是 strings 和 strconv 1、strings.HasPrefix 判断字符串开头常见的场景是用来判断服务地址是HTTP还是HTTPS 协议,例如:func main() { str := "http://www.baidu.com" if ok := strings.HasPrefix(str,"http://");ok { fmt.Println("it's http protocol") }else{ fmt.Println("unknown") } }2、strings.HasSuffix 判断字符串后缀场景,用于判断文件类型,例如图片是否是png格式func main() { pic := "baidu.png" if ok...阅读全文

博文 2019-06-18 22:03:49 筑梦攻城狮

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 国服最坑开发

Go中数字转换字符串的正确姿势

在许多语言中,你可以轻松地将任何数据类型转换为字符串,只需将其与字符串连接,或者使用类型转换表达式即可。但是,如果你在Go中尝试执行似乎很明显的操作(例如将int转换为字符串),你不太可能获得预期的效果。 比如下面: string(120) 复制代码你期望返回的结果是什么?如果你有使用其他编程语言的经验,那么大多数人的猜测是“ 123”。相反,在Go中上面的类型转换会得到“ E”之类的值,那根本不是我们想要的。因为string()会直接把字节或者数字转换为字符的UTF-8表现形式。 所以在Go中将byte或者int类型的值转换为数字的字符串表现形式的正确方法是使用strconv包中的方法,比如strconv.Itoa。 strconv.Itoa(120)// 返回"120" 复制代码下面的例...阅读全文

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

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

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

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-101-hacks(26)——io.Writer interface

注:本文是对golang-101-hacks中文翻译 与io.Reader 接口相对应的就是 io.Writer接口了 type Writer interface { Write(p []byte) (n int, err error) } 与io.Reader相比,不需要考虑io.EOF 错误, Write方法很简单: Compared to io.Reader, since you no need to consider io.EOF error, the process of Writemethod is simple: 当err == nil 表示所有数据写入成功 (1) err == nil: All the data in p is written successfully; (...阅读全文

博文 2019-06-30 23:32:41 羊羽shine

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

如何使用Go接口

## 常见写法 经常看到许多人的写法 ```go package animals type Animal interface { Speak() string } //实现animal这个接口 type Dog struct{} func (a Dog) Speak() string { return "woof" } ``` ```go package circus import "animals" func Perform(a animal.Animal) string { return a.Speak() } ``` 这种写法很像java 风格,`Java-style`接口使用方式。解读上面的代码步骤 - 定义了一个...阅读全文

GOLANG TYPE 妙用,Interface 和C/C++高阶template ,UNIX上通过

type 是 go 语法里的重要而且常用的关键字,type 绝不只是对应于 C/C++ 中的 typedef。搞清楚 type 的使用,就容易理解 go 语言中的核心概念 struct、interface、函数等的使用。以下我用例子代码总结描述,请特别留意代码中的注释。 1、定义结构体 ```go // 结构体定义 type person struct { name string //注意后面不能有逗号 age int } func main() { //结构体初始化 p := person{ name: "taozs", //注意后面要加逗号 age: 18, //或者下面的}提到这儿来可以省略逗号 ...阅读全文

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入门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 言淦

docker-proxy存在合理性分析

访问docker容器网络 熟悉docker的朋友也许都知道在使用docker默认情况下为所有的容器准备了一个网络(docker0),并且可以通过-p参数将将主机上某个端口映射到容器内部的固定端口上。例如: docker run -name zxy-nginx -itd -p 8080:80 mynginx:v1 /bin/bash 上面命令运行后,可以在主机上通过docker ps命令查看到多了一个叫zxy-nginx的容器(上例中假设我们主机上有一个叫mynginx:v1的nginx 容器镜像)。且docker在主机上将任意网络接口的8080访问导入到zxy-nginx容器内部。 # docker ps CONTAINER ID. IMAGE. COMMAND. CREATED. STAT...阅读全文

博文 2019-07-20 20:32:39 marshalzxy

Go 语言的 ORM 框架是否支持动态表结构操作?

最近在做一个需求:使用 Go 语言做一个数据仓库服务,底层采用 MySQL 存储,上层提供友好的接口。 接口允许调用方自行决定数据存储的变量名(可以映射为数据库的列名),数据类型(映射为 MySQL 的部分数据类型)。 针对这个需求,我们考虑 Go 的几个 ORM 库。但是呢,以 gorm 为例,给出的例子都需要给定一个 struct,然后根据这个 struct 的结构和类型定义,存取 DB。如: `````` type Post struct { Id int `orm:"auto"` Title string `orm:"size(100)"` User *User `orm:"rel(fk)"` } var posts []*Post qs := o.Quer...阅读全文

类型声明对[]byte似乎不需要显式强制类型转换,很奇怪哦~

```go package main import "fmt" type B []byte type S string func main() { var b = B([]byte("hello")) P(b) Pr([]byte("hello")) //var s = S("world") //SS(s) //SSr(string("world")) } func P(b []byte){ fmt.Println(b) } func SS(s string){ fmt.Println(s) } func SSr(s S){ fmt.Println(s) } func Pr(b B){ fmt.Printl...阅读全文