精华内容
下载资源
问答
  • Golang 类型别名和类型定义

    千次阅读 2020-01-14 17:41:56
    Golang语言中存在一个关键字type,type又有两种使用方式,一种是类型别名,一种是类型定义,是不是熟悉的C语言(define和typedef)味道? 类型定义 type Student struct { name String age int } type I int ...

    Golang语言中存在一个关键字type,type又有两种使用方式,一种是类型别名,一种是类型定义,是不是熟悉的C语言(define和typedef)味道?

    • 类型定义
    type Student struct {
      name String
      age int
    }
    
    type I int
    
    • 类型别名
    type Sdt = Student
    type I = int
    

    他们之间有什么区别呢?区别就是类型定义是完全定义了一种新的类型,而类型别名只是给现有的类型取了一个别名alias

    type I int
    type D = int
    

    拿上面的例子来说,I是一种全新的类型,和现有的int类型完全不一样,即I类型的指针不能指向int类型的指针,反之亦然,类似于C语言中的typedef。而D只是int的一个别名,相当于编译期会预处理替换为int,类似于C语言中的#define。
    可能上面的例子太特殊了,看下面的例子

    type Student struct {
      name String
      age int
    }
    
    type Teacher Student
    

    相当于定义了一个新的Teacher类型,和下面的代码是等价的。虽然两个类型内存布局完全一样,但是从概念上来说,他们是完全不同的两个类型,不能相互兼容。

    type Teacher struct {
      name String
      age int
    }
    

    类型别名这个功能非常有用,鉴于go中有些类型写起来非常繁琐,比如json相关的操作中,经常用到map[string]interface {}这种类型,写起来是不是很繁琐,没关系,给它起个简单的别名!这样用起来爽多了。

    type strMap2Any = map[string]interface {}
    
    展开全文
  • Go语言中有一些基本的数据类型,如string,整型,浮点型,布尔等数据类型Go语言可以使用type关键字来定义自定义类型 自定义类型是定义了一个全新的类型。我们可以给予内置的基本 //将MyInt定义为int类型 type ...

    Go类型别名和自定义类型

    自定义类型

    在Go语言中有一些基本的数据类型,如string,整型,浮点型,布尔等数据类型,Go语言可以使用type关键字来定义自定义类型

    自定义类型是定义了一个全新的类型。我们可以给予内置的基本

    //将MyInt定义为int类型
    type MyInt int
    

    通过type关键字的定义,MyInt就是一种新的类型,它具有int的特性。

    类型别名

    类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型。就像一个孩子小时候有小名、乳名,上学后用学名,英语老师又会给他起英文名,但这些名字都指的是他本人。

    type TypeAlias = Type
    

    我们之前见过的runebyte就是类型别名,他们的定义如下:

    type byte = uint8
    type rune = int32
    

    类型定义和类型别名的区别

    类型别名与类型定义表面上看只有一个等号的差异,我们通过下面的这段代码来理解它们之间的区别。

    //类型定义
    type NewInt int
    
    //类型别名
    type MyInt = int
    
    func main() {
    	var a NewInt
    	var b MyInt
    	
    	fmt.Printf("type of a:%T\n", a) //type of a:main.NewInt
    	fmt.Printf("type of b:%T\n", b) //type of b:int
    }
    

    结果显示a的类型是main.NewInt,表示main包下定义的NewInt类型。b的类型是intMyInt类型只会在代码中存在,编译完成时并不会有MyInt类型。

    package main
    
    import "fmt"
    
    //类型别名,与自定义类型的区别
    
    //1.自定义类型
    
    // MyInt 基于int类型的自定义类型
    type MyInt int
    
    //2.类型别名
    
    // NewInt int类型别名
    type NewInt = int
    
    func main()  {
       var i MyInt
       fmt.Printf("type:%T value:%v\n",i,i)
    
       var x NewInt
       fmt.Printf("type:%T value:%v\n",x,x)
    }
    
    展开全文
  • 1.12 go类型别名

    2020-04-02 08:40:40
    package main import "fmt" func main() { //方式1 type bigint int64 var a bigint fmt.Printf("a is %T\n", a) //方式2 type ( int int32 char byte ) ... fmt.Printf("b type is ...
    package main
    
    import "fmt"
    
    func main() {
    	//方式1
    	type bigint int64
    	var a bigint
    	fmt.Printf("a is %T\n", a)
    	//方式2
    	type (
    		int  int32
    		char byte
    	)
    	var b int
    	var c char
    	fmt.Printf("b type is %T,c type is %T", b, c)
    
    }
    

     

    展开全文
  • 类型别名和自定义类型区别 自定义类型 //自定义类型是定义了一个全新的类型 //将MyInt定义为int类型 type MyInt int 类型别名 //类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个...

    类型别名和自定义类型区别

    自定义类型

    //自定义类型是定义了一个全新的类型
    //将MyInt定义为int类型
    type MyInt int

    类型别名

    //类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型。
    type TypeAlias = Type
    type byte = uint8
    type rune = int32

    区别

    类型别名与类型定义表面上看只有一个等号的差异

    //类型定义
    type NewInt int
    
    //类型别名
    type MyInt = int
    
    func main() {
        var a NewInt
        var b MyInt
        
        fmt.Printf("type of a:%T\n", a) //type of a:main.NewInt
        fmt.Printf("type of b:%T\n", b) //type of b:int
    }
    //区别
    //结果显示a的类型是main.NewInt,表示main包下定义的NewInt类型。b的类型是intMyInt类型只会在代码中存在,编译完成时并不会有MyInt类型。

     

    转载于:https://www.cnblogs.com/Paul-watermelon/p/11100854.html

    展开全文
  • 0710GO类型别名

    2018-07-10 15:25:41
    // 创建一个类型 TNUM 其底层类型是int,也就是创建了int类型别名 type TNUM int func main() { var tnum TNUM fmt.Println(tnum) // 调用方法 tnum.intadd(100) fmt.Println(tnum) } // 为TNUM 类型创建....
  • Go 类型别名与类型声明的区别

    千次阅读 2018-01-28 07:46:17
    type D = int // 类型别名 type I int // 类型声明 复制代码注:类型别名有一个等号,类型声明没有等号 区别 类型别名和原类型完全一样,只不过是另一种叫法而已,而类型定义和原类型是不同的两个类型。 看如下例子:...
  • Golang 之区分类型别名与类型定义

    万次阅读 2019-07-06 17:12:14
    Golang 之区分类型别名(Type Alias)与类型定义(Type define)一、类型别名(Type Alias)、类型定义是什么?二、区分类型别名与类型定义类型定义 类型别名 类型定义 区分类型别名、类型定义 非本地类型不能...
  • Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct...
  • go语言中可以使用type关键字来定义类型,type有关类型方面有两种发放,一种是类型别名,一种是自定义类型。 type myInt int //自定义类型 type thisInt = int //类型别名 自定义类型myInt是一种新的类型,具有int...
  • Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct...
  • 由于工作之后没有进行过任何C语言编程开发,这里不做详细讨论,主要是为了说明类型别名对于Go语言的意义。 在 Go 1.9 版本之前定义内建类型的代码是这样写的: type byte uint8 type rune int32 为了配合类型别名,...
  • //自定义类型和类型别名 //type后面跟的是类型 type myint int //自定义类型 编译完之后还是自定义类型 type youint=int //类型别名 编译完之后还是原来的类型 func main(){ var n myint n=100 fmt.Println(n...
  • 定义 package main import "fmt" type myInt int //自定义类型 type yourInt = int //类型别名 func main() { var n myInt n = 100 fmt.Println(n) ...1、类型别名编译时会被转成对应类型,可以与相同
  • Golang type 类型别名和类型定义

    千次阅读 2019-07-16 09:55:27
    Golang语言中存在一个关键字type,type又有两种使用方式,一种是类型别名,一种是类型定义,是不是熟悉的C语言(define和typedef)味道? 类型定义 type Student struct { name String age int } type I int 类型...
  • Go 1.9 的类型别名

    2019-05-09 18:21:26
    转自:https://colobu.com/2017/06/26/learn-go-type-aliases/ 目录[−] ...如你所知, 类型别名(type aliases) 最终还是加入到Go 1.9中, Go 1.9 beta2今天已经发布了, 正式版预计8月初发布, 是时候...
  • Go-类型别名与类型声明的区别

    千次阅读 2018-05-13 13:39:24
    type D = int // 类型别名 type I int // 类型声明 注:类型别名有一个等号,类型声明没有等号 区别 类型别名和原类型完全一样,只不过是另一种叫法而已,而类型定义和原类型是不同的两个类型。 看如下例子: ...
  • 文章目录简介定义新类型类型别名(定义类型的新名字)参考代码代码 简介 区分新类型声明和类型别名的不同之处,虽然简单,却也是容易忽视的地方,这里做个简单介绍。 定义新类型 type关键字用来声明一个新类型: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,402
精华内容 8,560
关键字:

go类型别名