Go struct

xuheazx · · 6022 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

// 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")

}



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:xuheazx

查看原文:Go struct

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6022 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传