zoukankan      html  css  js  c++  java
  • 03Go指针

    Go语言基础之指针

    区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。

    要搞明白语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值

    Go语言中的指针

    任何程序数据载入内存后,在内部都有他们的地址,这就是指针。而为了保存一个数据在内存中的地址,我们就需要

    指针变量。

    比如,“”“永远不要高估自己”这句话是我的座右铭,我想把它写入程序中,程序一启动这句话就要加载到内存中,我在

    程序中吧这段话赋值给变量A,把内存地址复制给变量B,这时候B就是一个指针变量。通过变量A和变量B都能

    找到我的座右铭。

    Go语言中的指针不能进行偏移和运算,因此Go语言中的指针操作非常简单,我们只需要记住两个符号

    & 取地址 * 根据地址取值

    指针地址和指针类型

    每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。Go语言中会用&字符放在变量

    前面对变量进行 取地址操作,Go语言中的值类型 int float bool string  array struct 都有对应的指针类型,

    如 *int *int64 *string 等

    取变量指针的语法如下

    ptr := &v

    其中

    ptr := &v

    v:代表被取地址的变量,类型为T

    ptr:用于接收地址的变量,ptr的类型就为*T,称作T的指针类型。*代表指针

    Go 语言基础之结构体

    Go语言中没有类的概念,也不支持 类的继承等面向对象的概念,Go语言中通过结构体的内嵌在配合接口比面向对象

    具有更高的扩展性和灵活性

    类型别名和自定义类型

    自定义类型

    在Go语言中有一些基本的数据类型,如string, 整型 浮点型 布尔型 等数据类型,Go语言中可以使用type关键字来定义自定义类型。

    自定义类型是定义了一个全新的类型,我们可以基于内置的基本类型定义,也可以通过struct定义。例如:

    type MyInt int 

    通过type 关键字的定义,MyInt就是一种新的类型,它具有int的特性。

    类型别名

    类型别名是Go1.9版本添加的新功能

    类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型

    type TypeAlias = type

    结构体

    Go语言中的基本数据类型可以表示一些事物的基本属性,但是当我们想表达一个事物的全部或部分属性时,

    这时候再用单一的基本数据类型明显就无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个

    基本数据类型,这种数据类型叫结构体,英文名称struct .也就是我们可以通过struct 来定义自己的类型了

    Go语言中通过struct 来实现面向对象。

    结构体的定义

    使用type和struct 关键字来定义结构体,具体代码格式如下

    type 类型名 struct {

      字段名 字段类型

      字段名 字段类型

    }

    其中:

    类型名: 标识自定义结构体的名称,在同一个包内不能重复

    字段名:标识结构体字段名。结构体中的字段名必须唯一

    字段类型:标识结构体字段的具体类型

    方法和接受者

    Go语言中的方法 Method 是一种作用于特定类型变量的函数。这种特定类型变量叫做接收者Receiver .接收者

    的概念就类似于其他语言中的this 或者 self

    方法的定义格式如下:

    func (接收者变量 接收者类型) 方法名(参数列表)(返回参数) {

      函数体

    }

    其中,

    接收者变量:接收者中的参数变量名在命名时,官方建议使用接收者类型名称首字母的小写,而不是self this 

    之类的命名。例如 Person 类型的接收者变量应该命名为p,Connector类型的接收者变量应该命名为c等。

    接收者类型:接收者类型和参数类似,可以是指针类型和非指针类型

    方法名 参数列表 返回参数 具体格式与函数定义相同

  • 相关阅读:
    环境变量学习(二)Mac 可设置环境变量的位置
    环境变量学习(一)简介、查看
    shell学习(二)安装shell环境
    npm学习(十八)npm scripts 使用指南
    nodemon学习(二)实战
    nodemon学习(一)简介、安装、配置、使用
    Error: listen EADDRINUSE 127.0.0.1:8888错误解决
    树莓派创建wifi热点
    JavaScript中的数据类型转换
    Packstack 搭建 OpenStack 报 MariaDB 错误的处理
  • 原文地址:https://www.cnblogs.com/simadongyang/p/14291060.html
Copyright © 2011-2022 走看看