Go struct

// xuhh_go_struct project main.go
/*
tips : 具有相同字段序列(字段名,类型,标签,顺序)的匿名struct 属于同一类型
struct  值类型。 赋值和传参都会复制全部内容。
struct 可以内嵌,但是不能同时内嵌同一类型和其指针类型
struct 可以匿名字段,字段包括任何类型。
struct 在内嵌多个类型的时候,需要注意如果不同类型之间拥有相同字段名的时候,调用这些类型的字段的时候
        需要加上类型名。
相同的struct 可以进行 == !=  = 操作。
 
 
 
 
*/
package main

import (
	. "fmt"
)

type Class struct {
	strClassname string
	nClassNum    int
	strAdress    string
	next         *Class
}

func main() {

	sC := Class{"one", 200, "beijing", nil}
	Println(sC)

	sC1 := Class{
		strClassname: "two",
		nClassNum:    300,
	}
	sC2 := Class{
		strAdress:    "shanghai",
		strClassname: "three",
		nClassNum:    300,
		next:         &sC}
	Println(sC1, sC2)

	//内嵌结构
	type Person struct {
		name string
		old  int
		XUHH struct {
			xu_name string
			xu_old  int
		}
	}

	p := Person{
		name: "luoxch",
		old:  1,
	}
	p.XUHH.xu_name = "nike"
	p.XUHH.xu_old = 2
	Println(p)

	var xu = struct {
		xu_name string
		xu_old  int
	}{
		xu_name: "Nike.Xu",
		xu_old:  200,
	}

	//具有相同字段序列(字段名,类型,标签,顺序)的匿名struct 属于同一类型
	p.XUHH = xu // 同一类型的struct 可以进行 == ||  != ||  = 操作
	Println(p)

	//匿名字段
	type Resourse struct {
		id  string
		old int
	}
	type Classity struct {
		id string
	}
	type User struct {
		Resourse
		Classity
		name string
	}

	u := User{
		Resourse: Resourse{"10000", 1000},
		name:     "John",
	}
	// id 属于两个 struct 都共同拥有,所以这里不能直接u.id 需要加上struct名字
	//	u.Classity.id
	Print(u.Classity.id, "  ", u.Resourse.id, "  ", u.name, "  ", u.old, "  ", u.Resourse.id, "\r\n")

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值