Go语言基础之结构体

1.自定义类型

在Go语言中有一些基本的数据类型。如string、int、bool、float等,Go语言中使用type关键字进行自定义类型。

//类型定义,将newInt定义为int类型
type newInt int

2.类型别名

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

//类型别名
type myInt = int

3.类型别名与类型定义的区别

package main

import "fmt"

//类型定义
type newint int

//类型别名
type myint = int

func main(){
	var a newint
	var b myint

	fmt.Printf("%T\n", a)	//main.newint
	fmt.Printf("%T\n", b)	//int
}

Go语言基础之结构体_第1张图片

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

4.结构体的定义

封装多个基本数据类型的自定义数据类型被称作结构体,英文成为struct,因此struct关键字可以定义自己的结构体类型,故Go语言中通过struct来实现面向对象。

type 类型名 struct {
    字段名 字段类型
    字段名 字段类型
    …
}

类型名:标识自定义结构体的名称,同一包中的名称不能重复。
字段名:表示结构体的字段名,结构体中的字段名必须一致。
字段类型:表示结构体字段的具体类型。

//person自定义类型中有name、sex、age三个字段
type Person struct{
	name string
	sex bool
	age int
}

4.结构体的实例化

结构体实例化的时候,系统才会真正的给结构体分配内存

package main

import "fmt"

type person struct {
	name string
	sex bool
	age int
}
func main(){
	var p1 person 
	p1.name = "zhangsan"
	p1.sex = true
	p1.age = 20
	fmt.Println(p1)
}

Go语言基础之结构体_第2张图片

可以通过点访问结构体中的字段(成员变量),例如,p1.name,p1.sex。

你可能感兴趣的:(Golang)