一.结构体有名属性

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. HttpRunner学习8--使用debugtalk.py辅助函数

    前言 在HttpRunner中,我们的测试用例都是写在 YAML/JSON 文件中,有时候我们想借助代码来实现某些较复杂的功能,但在 YAML/JSON 中是无法直接写代码来处理的,这个时候,我们可以 ...

  2. PDF提取表格的网页工具——Excalibur

      在之前的文章另类爬虫:从PDF文件中爬取表格数据中,我们知道如何利用Python的camelot模块,通过写Python程序来提取PDF中的表格数据.本文我们将学习如何用更便捷的工具从PDF中提取 ...

  3. 爬虫(五):代理IP、Cookie

    1. 代理IP 代理IP这个功能呢,在urllib和requests中都存在,但是这个在大的爬虫项目中是非常重要的,所以我拿出来单独讲解. 对于某些网站,如果同一个 IP 短时间内发送大量请求,则可能 ...

  4. git中的SSL certificate problem: unable to get local issuer certificate错误的解决办法

    我们在使用git初始化一个项目时,尤其是通过git submodule update --init --remote初始化子模块时,可能会遇到下面这个错误: fatal: unable to acce ...

  5. JS---DOM---为同一个元素绑定多个不同事件指向同一个事件处理函数

    为同一个元素绑定多个不同事件指向同一个事件处理函数 1. 用了switch(e.type){} 来修改 2. break <input type="button" value ...

  6. (办公)记事本_Linux常用的文件操作命令

    参考尚硅谷的谷粒学院的linux教程:http://www.gulixueyuan.com/course/300/task/7080/show 好吧,其实一个命令他要是讲超过20分钟,我就去看菜鸟教程 ...

  7. 《Python3 网络爬虫开发实战》学习资料

    <Python3 网络爬虫开发实战> 学习资料 百度网盘:https://pan.baidu.com/s/1PisddjC9e60TXlCFMgVjrQ

  8. 如何快速找到多个字典中的公共键(key)

    from random import randint, sample #sample随机取样 d1 = {k: randint(1, 4) for k in sample('abcdefgh', ra ...

  9. PWA学习笔记(二)

    设计与体验 APP Shell: 1.应用从显示内容上可粗略划分为内容部分和外壳部分,App Shell 就是外壳部分,即页面的基本结构 2.它不仅包括用户能看到的页面框架部分,还包括用户看不到的代码 ...

  10. 《软件安装》VMware 安装 centos8

    上期问题回顾 搞技术的同学应该都听过docker,那么请问docker和虚拟机有什么区别呢? 传统的虚拟机架构是:物理机 -> 宿主机操作系统 -> Hypervisor支持 -> ...