go-结构体

本文介绍了Go语言中如何使用type关键字创建自定义类型和类型别名,强调了两者的区别。通过示例展示了自定义类型在编译后仍保持其类型标识,而类型别名在编译后会还原为原始类型。此外,还探讨了Go语言的结构体和接口的概念,指出它们在面向对象编程中的灵活性和扩展性。结构体用于封装多个数据类型,而接口则提供了动态类型的能力,使得代码更具扩展性。
摘要由CSDN通过智能技术生成

目录

类型别名和自定义类型

自定义类型:

类型别名

举例:


go语言中没有“类”的概念,也不支持类的继承

但是go语言可以通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性

类型别名和自定义类型

自定义类型:

在go语言中有一些基本的数据类型,比如string int,bool等,也可以使用type关键字来定义自定义类型,语法:type 类型 基本数据类型

// 将myInt定义为int类型

type myInt int

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

类型别名

编写代码时,可以让自己的定义更清晰

//类型别名
type yourInt = int

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

  1. 自定义类型在编译完成后还保留自己的类型
  2. 类型别名只会在代码中生效,编译后打印类型还是原类型,比如rune在打印类型时还是int32

举例:

package main

import "fmt"

// type后边跟一个类型,自定义类型
type myInt int

//类型别名
type yourInt = int

func main() {
	var n myInt
	n = 100
	fmt.Println(n)
	fmt.Printf("type:%T\n", n)

	var m yourInt
	m = 100
	fmt.Println(m)
	fmt.Printf("type:%T\n", m)

	// rune就是默认的int32的类型别名,方便区分,表示字符
	var c rune
	c = '中'
	fmt.Println(c)
	fmt.Printf("type:%T\n", c)
	
}

输出:

100
type:main.myInt
100
type:int
20013
type:int32

结构体

go语言中基础数据类型可以表示一些事物的基本属性,但是想表达一个事物的全部属性或者不分属性时,可以提供一种自定义事件类型,封装多个数据类型,这种数据类型叫做结构体,用struct表示

  1. 类型名:标示自定义结构体的名称,在同一个包内不能重复
  2. 字段名:表示结构体的字段名,结构体中的字段名必须唯一
  3. 字段类型:表示结构体字段的具体类型
定义:

type 类型名 struct{

        字段名 字段类型

        字段名 字段类型

        ......

}
package main

import "fmt"

type person struct {
	name   string
	age    int
	gender string
	hobby  []string
}

func main() {
	var p person
	p.name = "zhangsan"
	p.age = 20
	p.gender = "boy"
	p.hobby = []string{"play", "movie"}
	fmt.Println(p)
	fmt.Printf("type:%T", p)
}

创建指针类型的结构体

    var p2 = new(person)
	fmt.Printf("p2 type:%T", p2)
	p2.name = "lisi"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值