• 速战速决 go go 面向对象: 结构体(定义结构体,声明结构体,初始化结构体,使用结构体,匿名结构体)


    速战速决 go https://github.com/webabcd/GoSample
    作者 webabcd

    速战速决 go - go 面向对象: 结构体(定义结构体,声明结构体,初始化结构体,使用结构体,匿名结构体)

    示例如下:

    oop/struct1.go

    // go 面向对象 - 结构体(定义结构体,声明结构体,初始化结构体,使用结构体,匿名结构体)
    
    package oop
    
    import "fmt"
    
    func Struct1Sample() {
    	struct1_sample1()
    	struct1_sample2()
    }
    
    func struct1_sample1() {
    	// 声明一个指定类型的结构体(结构体中的每个成员会用默认值初始化)
    	var a struct11
    	fmt.Println(a) // {0  }
    	// 为结构体成员赋值
    	a.a = 0
    	a.b = "abc"
    	a.c = "xyz"
    	// 输出结构体信息
    	// %v 仅输出字段的值
    	// %+v 输出字段的名称和字段的值
    	// %#v 输出结构体类型,以及字段的名称和字段的值
    	fmt.Printf("%v\n", a)  // {0 abc xyz}
    	fmt.Printf("%+v\n", a) // {a:0 b:abc c:xyz}
    	fmt.Printf("%#v\n", a) // oop.struct11{a:0, b:"abc", c:"xyz"}
    
    	// 用 new() 声明的结构体返回的是指针
    	b := new(struct11)
    	// 因为 b 是指针,所以要按如下方式赋值
    	(*b).a = 0
    	// 因为 go 支持语法糖(syntactic sugar)技术,他会自动转换的,所以你可以按如下方式赋值
    	b.a = 0
    	b.b = "abc"
    
    	// 声明一个指定类型的结构体,用 key/value 的方式对其成员做初始(不要求所有成员都初始化)化,也允许不手工初始化,但是 {} 要保留
    	// 前面加 & 返回的就是指针,前面不加 & 返回的就是指针指向的值
    	c := &struct11{
    		a: 0,
    		b: "abc",
    	}
    	fmt.Println(c) // &{0 abc }
    
    	// 声明一个指定类型的结构体,按顺序对其成员做初始化(必须对每个成员都做初始化),也允许不手工初始化,但是 {} 要保留
    	// 前面加 & 返回的就是指针,前面不加 & 返回的就是指针指向的值
    	d := &struct11{
    		0,
    		"abc",
    		"xyz",
    	}
    	fmt.Println(d) // &{0 abc xyz}
    
    	// 使用结构体中的成员
    	fmt.Println(d.a, d.b, d.c) // 0 abc xyz
    
    	// 结构体的相等判断:如果两个结构体中的所有成员的值都相同,则这两个结构体是相等的
    	fmt.Println(*b == *c, *b == *d) // true false
    }
    
    // 定义一个结构体
    type struct11 struct {
    	a    int
    	b, c string
    }
    
    func struct1_sample2() {
    	// 声明一个匿名结构体
    	// 前面加 & 返回的就是指针,前面不加 & 返回的就是指针指向的值
    	a := &struct {
    		a int
    		b string
    	}{
    		0,
    		"abc",
    	}
    	fmt.Println(a) // &{0 abc}
    }
    
    

    速战速决 go https://github.com/webabcd/GoSample
    作者 webabcd

  • 相关阅读:
    宏定义函数 字符串 多行书写采用换行
    new / delete && new[] / delete[]
    删除vector中的重复元素
    AES加密算法通用版本
    字符串匹配KMP算法详解
    超外差【整理】
    LTE PDCCH 盲检测
    PDCCH学习
    PDCCH format 与传输模式之间的关系
    LTE测量事件主要有下面几种:Event A1、Event A2、Event A3、Event A4、Event A5、Event B1、Event B2
  • 原文地址:https://www.cnblogs.com/webabcd/p/go_oop_struct1.html
Copyright © 2020-2023  润新知