一.结构体有名属性

package main
import "fmt"
func main(){
type Sb struct {
name string //属性名,数据类型
age int //如果两个属性数据类型一样可以name,age int
}
//他有两个属性不一定要两个属性都进行赋值
//位置进行传参{"you",11}
//但是位置传参必须所有属性都传进去
sb1 :=Sb{name:"you",age:11} //属性名:属性值 fmt.Println(sb1) //{you 11}
fmt.Println(sb1.name) //you
}

二.结构体匿名属性

package main
import "fmt"
func main(){
type Sb struct {
string //数据类型
int
}
sb1 :=Sb{string:"you"}
fmt.Println(sb1) //{you 0}
fmt.Println(sb1.string) //you
}

三.结构体方法

package main
import "fmt" type Sb struct {
} //注意点不定义在main函数内
func (sb Sb) Speak() { //func (结构体对象 结构体类型) 方法名(){}
fmt.Println("嗯")
} func main(){
wq :=Sb{}
wq.Speak()
}

四.结构体嵌套

type Hobby struct {
name string
id int
}
type Person struct {
name string
Hobby //结构体名称
}
func main(){
a := Person{name: "p1",Hobby:Hobby{name:"LOL",id:1}} fmt.Println(a.Hobby.name) //如果名字有重名需要.结构体.属性 fmt.Println(a.id)//如果没有重名属性名会提升
//fmt.Println(a.Hobby.id)你同样也可以这样获取
} /*
个人理解可以把它理解成python中的类的继承,比如A继承B
type B struct {int}
type A struct {B}
但是也有不同之处,他两个类中的名字一样可以共存,而python中不行
*/

五.结构体为方法的参数且修改结构体的属性

package main
import "fmt" type Person struct {
name string
} func ChangeName(p *Person,NewName string){ //如果不是改变原来的类只传值可以穿结构体对象
(*p.name) = NewName //也可以写成p.name=NewName
}
func main(){
a := Person{name: "p1"}
ChangeName(&a,"ywy")
fmt.Println(a.name)
}

六.结构体为方法的参数不修改结构体的属性

package main
import "fmt" type Person struct {
name string
} func ChangeName(p Person,NewName string){
p.name = NewName
}
func main(){
a := Person{name: "p1"}
ChangeName(a,"ywy")
fmt.Println(a.name)
}

七.结构体类型断言

写法一:

package main
import "fmt" type Person struct {
name string
}
func Test(a interface{}){
_,err :=a.(*Person)
if !err{
fmt.Println("是Person")
}
} func main(){
a := Person{name: "p1"}
Test(a)
}

写法二:

package main

import (
"fmt"
) type Person struct {
name string
} func Test(a interface{}) {
switch a.(type) { //如果要获取a的对象就AStruct :=a.(type)
case Person:
fmt.Println("是Person")
default:
fmt.Println("不是Person")
}
}
func main() {
a := Person{name: "p1"}
Test(a)
}

GO-结构体(类似python中的类)的更多相关文章

  1. 4、Python中的类详解(0601)

    <大话数据结构>的作者程杰在博客园也有博客,网址是:http://cj723.cnblogs.com/ 面向对象编程(OOP) 1.程序 = 指令 + 数据 代码可以选择以指令为核心或以数 ...

  2. Python基础之:Python中的类

    目录 简介 作用域和命名空间 class 类对象 类的实例 实例对象的属性 方法对象 类变量和实例变量 继承 私有变量 迭代器 生成器 简介 class是面向对象编程的一个非常重要的概念,python ...

  3. Python学习-11.Python中的类定义

    Python是一门面向对象语言,那么作为面向对象的特征——类也是有的.值得注意的是Python中一切皆对象,并不像C#中为了性能考虑,int这些在Python中也是对象.(C#中int是结构体) 如何 ...

  4. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  5. 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式

    逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...

  6. python中的类与继承

    Class 类的定义以及实例的建立 Python中,类通过 class 关键字定义. 例如最简单的一个类定义可以为: class Person(object): pass Python 的编程习惯,类 ...

  7. python中元类(metaclass)的理解

    原文地址:http://www.cnblogs.com/tkqasn/p/6524879.html 一:类也是对象 类就是一组用来描述如何生成一个对象的代码. 类也是一个对象,只要你使用关键字clas ...

  8. python中的类和实例

    今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...

  9. C语言结构体在内存中的存储情况探究------内存对齐

    条件(先看一下各个基本类型都占几个字节): void size_(){ printf("char类型:%d\n", sizeof(char)); printf("int类 ...

随机推荐

  1. 爬取https://www.parenting.com/baby-names/boys/earl网站top10男女生名字及相关信息

    爬取源代码如下: import requests import bs4 from bs4 import BeautifulSoup import re import pandas as pd impo ...

  2. 【每天一题】LeetCode 121. 买卖股票的最佳时机

    开源地址:点击该链接 题目描述 * https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock * 题目描述: * 给定一个数组, ...

  3. Android 共享参数 SharedPreferences

    完成共享参数的读写 public class SharedPreference { private Context context; public SharedPreference(Context c ...

  4. 软件开发工具(第8章:Eclipse工作台)

    一.初识Eclipse工作台 Eclipse 工作台(Workbench)是一个高级用户界面框架,它为用 户提供了一个整体结构和可扩展的用户界面. 什么是工作空间(记忆) 工作空间(Workspace ...

  5. C语言基于NIOSII的软件开发及流水灯设计

    一.Quartus II 12.1 (32-Bit)进行硬件设计 1.所需要的系统元器件组成 2.系统电路图 二.Nios II 12.1 Software Build Tools for Eclip ...

  6. Appium(十):元素定位(加强版)

    1. 元素定位 写完上一篇元素定位的博客,发现实用性基本为零.这几天真的烦死我了,一直在找资料,还去看了一遍appium官网文档.最后结合着selenium的定位方法,测试出几种可行的元素定位方法. ...

  7. 用 Keras 实现单词级的 one-hot 编码 & 使用散列技巧的单词级的 one-hot 编码

    from keras.preprocessing.text import Tokenizer samples = ['The cat sat on the mat.', 'The dog ate my ...

  8. Fiddler抓取内容自动保存本地

    Fiddler抓取内容自动保存本地 一.点击FidderScript 二.选择你想要的获得内容的方法 OnBeforeRequest:发送请求后 OnBeforeResponse:获得响应 三.修改j ...

  9. SpringMVC框架之第二篇

    6.参数绑定(重点) Springmvc作为表现层框架,是连接页面和service层的桥梁,它负责所有请求的中转.怎么从请求中接收参数是重点,这也体现了我们刚开始说的Springmvc的第一个作用:“ ...

  10. UI_DEV_Environment 之 StoryBook

    写在前面 由于本文主要集中关注与工具使用,所以不可能完全介绍工具的所有功能,所以要想了解更多,可以自己去各自官方网站上查看. github examples 什么是UI开发环境 UI开发环境专注于用户 ...