Go学习笔记(六)

(文章持续更新中...有志同道合的人可以一起探讨下。整个系列(1~8)准备重写,不过都是很基础的入门笔记,想学到很深入的东西则不建议阅读...)

Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性。可以类比为“类”

Go 语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。

结构体就是数据结构一种表现方式,可嵌套

// 结构体的定义
type 类型名 struct {
    字段1 字段1类型
    字段2 字段2类型
    …
}

type Point struct {
    X int
    Y int
}
复制代码

结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正地分配内存。因此必须在定义结构体并实例化后才能使用结构体的字段

// 基本实例化格式
var ins T

type Point struct {
    X int
    Y int
}
var p Point
p.X = 10
p.Y = 20

// Go 语言中,还可以使用 new 关键字对类型(包括结构体、整型、浮点数、字符串等)进行实例化,结构体在实例化后会形成指针类型的结构体。

ins := new(T)

Go 语言中,对结构体进行&取地址操作时,视为对该类型进行一次 new 的实例化操作

ins := &T{}
Go 语言中,访问结构体指针的成员变量时可以继续使用.操作符。 C/C++ 语言中,使用 new 实例化类型后,访问其成员变量时必须使用->操作符
复制代码

Go语言为任意类型添加方法

// 为基本类型添加方法
package main

import (
    "fmt"
)
// 将int定义为MyInt类型
type MyInt int
// 为MyInt添加IsZero()方法
func (m MyInt) IsZero() bool {
    return m == 0
}
// 为MyInt添加Add()方法
func (m MyInt) Add(other int) int {
    return other + int(m)
}
func main() {
    var b MyInt
    fmt.Println(b.IsZero())
    b = 1
    fmt.Println(b.Add(2))
}
复制代码

转载于:https://juejin.im/post/5cea91cf5188251e030fe1c0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值