go语言入门(2)

结构体

1.结构体的定义,和结构体变量的定义

package main
import "fmt"
type student struct {
	Name   string
	Age    int
	School string
}
func main() {
	var lv student
	fmt.Println(lv)
	lv.Name="akujbfc"
	lv.Age=18
	lv.School="XUPT"
}

2.结构体实例的创建

(1)方式一:

如上

(2)方式二:

type student struct {
	Name   string
	Age    int
	School string
}

func main() {
	var l student = student{"lv", 18, "XUPT"}
	fmt.Println(l)
}

(3)方法三

package main

import "fmt"

type student struct {
	Name   string
	Age    int
	School string
}

func main() {
	var l *student = new(student)
	(*l).Name = "lv"
	(*l).School = "XUPT"
	l.Age = 18
	fmt.Println(l)
}

这里使用(*l)与l效果相同,是因为编译器的自动修正

(4)方式四

func main() {
	var l *student = &student{}
	(*l).Name = "lv"
	(*l).School = "XUPT"
	l.Age = 18
	fmt.Println(l)
}

也可以直接在{}内赋值

结构体直接的转换

1.结构体是用户单独定义的类型,和其他类型进行转换的时候需要有完全相同的字段(名字,个数,类型)

type student struct {
	Age int
}

type teacher struct {
	Age int
}

func main() {
	var a student = student{1}
	var b teacher = teacher{10}
	a = student(b)
	fmt.Println(a)
}

2.结构体进行type重新定义(相当于别名),golang认为是新的数据类型,但是可以强制转换

type student struct {
	Age int
}
type Stu student

func main() {
	var a student
	var b Stu
	a = student(b)
	fmt.Println(a)
}

方法

方法是作用在指定的数据类型之上,和指定的数据类型绑定

方法的定义格式

type A struct{
    Num int
}
func(a A)test(){
 fmt.println(a.num)
}

func(a A)test()

1)A结构体有个对应的方法叫做test

2)(a A)体现test方法与结构体A为绑定关系

package main

import "fmt"

// 定义结构体
type Person struct {
	Name string
}

// 给结构体绑定方法
func (p Person) test() { // 参数名字任意
	fmt.Println(p.Name)
}

func main() {
	// 创建结构体对象
	var p Person
	p.Name = "lv"
	p.test()
}

注意:

1)test方法中参数名字任意

2)结构体person和test方法是绑定的,调用test方法必须使用绑定的类型:person

3)使用其他方法调用test方法一定会报错

4)结构体对象传入test方法中属值传递

package main

import "fmt"

// 定义结构体
type Person struct {
	Name string
}

// 给结构体绑定方法
func (p *Person) test() { // 参数名字任意
	(*p).Name = "li"
	fmt.Println(p.Name)
}

func main() {
	// 创建结构体对象
	var p Person
	p.Name = "lv"
	(&p).test()
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值