文档章节

GO结构体

汤汤圆圆
 汤汤圆圆
发布于 2018/10/08 14:41
字数 376
阅读 9
收藏 0
package main

import (
	"fmt"
	"encoding/json"
)
type Point struct {
	x,y int
}
type Rect struct {
	leftUp,righDown Point
}

type A struct {
	Name string
}
type B struct {
	Name string
}
//tag的使用
type C struct {
	Name string `json:"name"`
	Age int `json:"age"`
}
//相当于给C取了别名,但是他们类型不一样,可以强转
type D C

type TestStruct struct {
	Name string
	Age int
	Scores [5]float64
	Ptr *int //指针
	Slice []int //切片
	Map map[string]string //map
}
func main() {
	var ts TestStruct;
	ts.Name = "tang"
	ts.Age = 30
	ts.Scores = [5]float64{10.0, 11.0, 12.0, 13.0, 14.0}
	test := 1;
	ts.Ptr = &test
	ts.Slice = make([]int, 2, 5)
	ts.Map = make(map[string]string, 3)
	fmt.Println(ts)

	ts2 := TestStruct{"tang", 30, ts.Scores, &test, ts.Slice, ts.Map}
	fmt.Println(ts2)
	
	var ts3 *TestStruct = new(TestStruct)
	ts3.Name = "tang" //(*ts3).Name = "xxx"
	fmt.Println(*ts3)

	var ts4 *TestStruct = &TestStruct{"Tang", 18, ts.Scores, &test, ts.Slice, ts.Map}
	(*ts4).Name = "tang" //ts4.Name = "xxx" 
	fmt.Println(*ts4)

	//结构体元素 内存地址是连续的
	r1 := Rect{Point{1,2}, Point{3,4}}
	fmt.Printf("r1.leftUp.x %p\nr1.leftUp.y %p\nr1.righDown.x %p\nr1.righDown.y %p\n", 
	&r1.leftUp.x, &r1.leftUp.y, &r1.righDown.x, &r1.righDown.y)

	//两个结构体需要相互转换 结构体字段必须要完全一样(名称,个数,类型)
	var a A
	var b B
	var c C
	var d D
	a = A(b)  //可以
	//a = A(c) //不行 
	fmt.Println(a)

	//结构体进行type重新定义(相当于别名),go认为是新的数据类型,但是相互之间可以强转
	//c = d //这是不正确的,他们类型不一样
	c = C(d) //可以
	fmt.Println(c)

	c.Name = "test"
	c.Age = 10
	jsonstr,err := json.Marshal(c)
	if nil != err {
		fmt.Println("json错误", err)
	}
	fmt.Println(string(jsonstr)) //{"name":"test","age":10}
}

© 著作权归作者所有

上一篇: GO接口
下一篇: es 相关操作笔记
汤汤圆圆

汤汤圆圆

粉丝 11
博文 82
码字总数 26104
作品 0
昌平
程序员
私信 提问
C语言-第八章、构造数据类型

8_1 结构体的概念和结构体变量 _1.1 结构体的概念 C语言中允许用户自己构造由不同数据类型的数据所组成的集合体,称为结构体。结构体属于数据类型,每一个结构体有一个名字,称为结构体名。一...

南风末
2016/11/05
30
0
C语言基础-13-结构体

C语言的核心部分都说得七七八八了,相信大家已经对C语言的基本数据类型(charintfloat)、数组、指针都很熟悉了,今天来学习C语言中另外一种数据类型:结构体。在iOS开发中,结构体是经常用到的...

Corwien
2016/03/16
23
1
Golang:结构体

结构体 结构体(struct)是用户自定义的类型,代表若干字段的集合。有时将多个数据看做一个整体要比单独使用这些数据更有意义,在这种情况下就适合使用结构体。 比如将一个员工的 firstName,...

与蟒唯舞
2017/12/27
0
0
C语言结构体、枚举以及位域的讲解

谨记 什么是价值?或许没有多少人能够明白,其实价值并不是实际存在的,它应该是一种体现,比如为城市点缀最美好的一面而起早摸黑的打扫的城市清洁工的大妈大爷;为中国航天事业而几个月没回...

长风留言
2017/11/20
0
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3040...

不最醉不龟归
04/21
14
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
1K
12
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
34
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
38
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
53
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部