行业知识
Go语言实战五-go语言的类型与iton
2026-10-22 00:54:43
来源:互联网转载
前言
go��言是静态类型语言,也就是在编译时编译器需要知道程序中值的类型,这样有利于减少bug和提高性能,具体就是内存的分配量和其中的内容
()用户定义类型
1.用户定义新的类型,需要使用type 和struct关键字
type user struct {name stringemail stringphone int} 这个类型就类似于面向对象时抽象出来的一个对象
()可以用来创建值
var jack user
这样jack就是一个user类型的变量,不初始化时数值类型默认为0,字符串为空字符串,布尔为false
可以利用短变量声明操作符(: =)对变量初始化
lisa := user{name:"lisa",email:"aaa@bb.com",phone:"134343434"} 如下,也可以不用字段名直接按顺序赋值
lisa := user{"Lisa", "lisa@email.com", 123, true} 同时,结构体也可以嵌套,如下,person是一个user结构体类型的变量
type admin struct {person userlevel string } 如此初始化时也要对person按照结构体的方式进行赋值
2. 声明新类型还可以用已有的基础类型延伸,例如
type Duration int64
Duration基于int64类型,它的单位是ns(纳秒)
虽然是基于int64声明的,但它不兼容int64类型的值,强行赋值的话,编译器无法进行转换,会报错
方法
func关键字可以声明方法,如下
// notify 使用值接收者实现了一个方法 func (u user) notify() { fmt.Printf("Sending User Email To %s\n", u.name, u.email) } // changeEmail 使用指针接收者实现了一个方法 func (u *user) changeEmail(email string) { u.email = email } 两种接收者就类似于其他语言中的函数形参,都可以用来调用方法自身,两者特点是,值接收者在调用时会生成一个副本,指针接收者则会影响到原值,在编码时对两者的抉择,会有一些基本的指导原则
1.如果要更改原值,就使用指针接收者,如果要创建一个新值,就使用值接收者