【go语言实践】基础篇二 -- 值类型、命名规范、导入包及go指针

2023-12-13 11:15

本文主要是介绍【go语言实践】基础篇二 -- 值类型、命名规范、导入包及go指针,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

golang中值类型和引用类型

go中值类型变量直接存储值,内存通常在栈中分配,引用类型变量存储的是一个地址,这个地址对应的对应的空间才真正存储数据,当没有任何变量引用该地址时,该地址对应的数据空间就会被go的GC(垃圾回收机制)回收。开发人员无需关注内存回收问题。

  • 值类型,这类包含基本的数据类型,int、float、bool、string及数组和结构体struct
  • 引用类型:指针、slice切片、map、管道channel、interface等

go语言标识符命名规则

  • 26个英文字母大小写,0-9,_组成
  • 数字不可以开头
  • 严格区分大小写
  • 标识符不能包含空格
  • 下划线"_"本身在go中是一个特殊的标识符,称为空表示符,可以代表任意其他字符,它对应的值会被忽略,所以仅能作为占位符使用,不能作为标识符使用(只用_时不行)
  • 不能一系统保留关键字作为标识符

go语言包命名规范

  • 包名与目录尽量保持一致,不要与标准库冲突
  • 变量名、函数名、常量名通常采用驼峰写法
  • 如果变量名、函数名、常量名首字母大写,可以被其他包访问,如果首小写,则只能在本包使用。go语言中没有显示定义private、public的概念。

go语言引入自己编写的包

假设我们在src目录下,创建了go_code/test/demo1目录,go源文件存放在demo1目录下,那么我们想在其他目录下引入该包,可以这样写:

import ("fmt""go_code/test/demo1"
)

我们不需要写全绝对路径,在我们已经配置了系统环境变量GOPATH的情况下,也不用写src,go默认会给我们加src

go语言指针

go派生数据类型总览

  • 指针
  • 数组
  • 结构体
  • 管道(channel)
  • 函数
  • 切片(slice)
  • 接口
  • map

go中所有值类型都有对应的指针类型,形式都为*type,type为具体的数据类型。值类型包括基本数据类型、数组、结构体

声明一个int类型指针:

var ptr *int

我们不能将一个整形的地址赋值给一个double类型的指针

这篇关于【go语言实践】基础篇二 -- 值类型、命名规范、导入包及go指针的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/488264

相关文章

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

Go信号处理如何优雅地关闭你的应用

《Go信号处理如何优雅地关闭你的应用》Go中的优雅关闭机制使得在应用程序接收到终止信号时,能够进行平滑的资源清理,通过使用context来管理goroutine的生命周期,结合signal... 目录1. 什么是信号处理?2. 如何优雅地关闭 Go 应用?3. 代码实现3.1 基本的信号捕获和优雅关闭3.2

C# dynamic类型使用详解

《C#dynamic类型使用详解》C#中的dynamic类型允许在运行时确定对象的类型和成员,跳过编译时类型检查,适用于处理未知类型的对象或与动态语言互操作,dynamic支持动态成员解析、添加和删... 目录简介dynamic 的定义dynamic 的使用动态类型赋值访问成员动态方法调用dynamic 的

Python模块导入的几种方法实现

《Python模块导入的几种方法实现》本文主要介绍了Python模块导入的几种方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录一、什么是模块?二、模块导入的基本方法1. 使用import整个模块2.使用from ... i

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空