GO-结构体(类似python中的类)
一.结构体有名属性
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中的类)的更多相关文章
- 4、Python中的类详解(0601)
<大话数据结构>的作者程杰在博客园也有博客,网址是:http://cj723.cnblogs.com/ 面向对象编程(OOP) 1.程序 = 指令 + 数据 代码可以选择以指令为核心或以数 ...
- Python基础之:Python中的类
目录 简介 作用域和命名空间 class 类对象 类的实例 实例对象的属性 方法对象 类变量和实例变量 继承 私有变量 迭代器 生成器 简介 class是面向对象编程的一个非常重要的概念,python ...
- Python学习-11.Python中的类定义
Python是一门面向对象语言,那么作为面向对象的特征——类也是有的.值得注意的是Python中一切皆对象,并不像C#中为了性能考虑,int这些在Python中也是对象.(C#中int是结构体) 如何 ...
- Python中的类、对象、继承
类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...
- 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式
逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...
- python中的类与继承
Class 类的定义以及实例的建立 Python中,类通过 class 关键字定义. 例如最简单的一个类定义可以为: class Person(object): pass Python 的编程习惯,类 ...
- python中元类(metaclass)的理解
原文地址:http://www.cnblogs.com/tkqasn/p/6524879.html 一:类也是对象 类就是一组用来描述如何生成一个对象的代码. 类也是一个对象,只要你使用关键字clas ...
- python中的类和实例
今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...
- C语言结构体在内存中的存储情况探究------内存对齐
条件(先看一下各个基本类型都占几个字节): void size_(){ printf("char类型:%d\n", sizeof(char)); printf("int类 ...
随机推荐
- HttpRunner学习8--使用debugtalk.py辅助函数
前言 在HttpRunner中,我们的测试用例都是写在 YAML/JSON 文件中,有时候我们想借助代码来实现某些较复杂的功能,但在 YAML/JSON 中是无法直接写代码来处理的,这个时候,我们可以 ...
- PDF提取表格的网页工具——Excalibur
在之前的文章另类爬虫:从PDF文件中爬取表格数据中,我们知道如何利用Python的camelot模块,通过写Python程序来提取PDF中的表格数据.本文我们将学习如何用更便捷的工具从PDF中提取 ...
- 爬虫(五):代理IP、Cookie
1. 代理IP 代理IP这个功能呢,在urllib和requests中都存在,但是这个在大的爬虫项目中是非常重要的,所以我拿出来单独讲解. 对于某些网站,如果同一个 IP 短时间内发送大量请求,则可能 ...
- git中的SSL certificate problem: unable to get local issuer certificate错误的解决办法
我们在使用git初始化一个项目时,尤其是通过git submodule update --init --remote初始化子模块时,可能会遇到下面这个错误: fatal: unable to acce ...
- JS---DOM---为同一个元素绑定多个不同事件指向同一个事件处理函数
为同一个元素绑定多个不同事件指向同一个事件处理函数 1. 用了switch(e.type){} 来修改 2. break <input type="button" value ...
- (办公)记事本_Linux常用的文件操作命令
参考尚硅谷的谷粒学院的linux教程:http://www.gulixueyuan.com/course/300/task/7080/show 好吧,其实一个命令他要是讲超过20分钟,我就去看菜鸟教程 ...
- 《Python3 网络爬虫开发实战》学习资料
<Python3 网络爬虫开发实战> 学习资料 百度网盘:https://pan.baidu.com/s/1PisddjC9e60TXlCFMgVjrQ
- 如何快速找到多个字典中的公共键(key)
from random import randint, sample #sample随机取样 d1 = {k: randint(1, 4) for k in sample('abcdefgh', ra ...
- PWA学习笔记(二)
设计与体验 APP Shell: 1.应用从显示内容上可粗略划分为内容部分和外壳部分,App Shell 就是外壳部分,即页面的基本结构 2.它不仅包括用户能看到的页面框架部分,还包括用户看不到的代码 ...
- 《软件安装》VMware 安装 centos8
上期问题回顾 搞技术的同学应该都听过docker,那么请问docker和虚拟机有什么区别呢? 传统的虚拟机架构是:物理机 -> 宿主机操作系统 -> Hypervisor支持 -> ...