Go语言简介

一.Go语言简介

        1.1 优点

  • 自带gc
  • 静态编译,编译好后,扔服务器直接运行
  • 简单思想,没有继承,多态和类等
  • 丰富的库和详细开发文档
  • 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便
  • 简洁语法,提高开发效率,同时提高代码的阅读性和可维护性
  • 超级简单的交叉编译,仅需修改环境变量

        1.2 主要特征

  • 自动立即回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

        1.3 Golang文件名

所有的go源码都以".go"结尾

        1.4 Go语言命名

  • Go的函数,变量,常量,自定义类型,包(package)的命名方式遵循以下规则:

1. 首字符可以是任意字符或者下划线

2. 剩余字符可以是字符,下划线和数字

3. 字符长度不限

  • 25个关键字

  • 37个保留字 

  • 可见性 

 1. 声明在函数内部,是函数的本底值,类似private

 2. 声明在函数外部,是对当前包可见(包内所有.go文件可见)的全局值,类似protect

 3. 声明在函数外部且首字母大写是所有包可见的全部值,类似public 

        1.5 Go语言声明

        有四种主要声明方式:

 var(声明变量),const(声明常量),type(声明类型),func(声明函数)

        Go程序是保存在多个.go文件中,文件的第一行就是package xxx声明,用来说明该文件属于哪一个包(package),package声明下来就是import声明,再下来是类型,变量,常量,函数的声明。

        1.6 Go项目构建及编译

        一个Go工程中主要包含以下三个目录:

1. src:源代码文件

2. pkg:包文件

3. bin:相关bin文件

  • 建立工程文件go
  • 在工程文件下建立src,pkg,bin文件夹

  •  在GOPATH环境变量中添加工程文件路径

go env查看环境变量:set GOPATH=D:\go

  • 在src文件夹下编写主程序代码project.go
  • 在src文件夹下建立自己的包examplepackage文件夹
  • 在examplepackage文件夹中编写examplepackage.go和examplepackage_test.go

  • 编译调试包 

  •  编译主程序

        1.7 go编译问题

        golang的编译使用命令go build, go intall;除非仅写一个main函数,否则还是准备好目录结构,GOPATH=工程根目录;其下创建src,pkg,bin目录,bin目录用于生成可执行文件,pkg目录用于生成.a文件,golang中的import name,实际就是到GAPATH中去寻找name.a,使用时是该name.a源码中声明的package名字。

        例如:import exampletest,会在pkg目录下查找exampletest.a文件,由于exampletest生命的packge名文exampletest,其他项目中使用exampletest中的类型或函数等,需要通过"exampletest.名字"使用。

        注意点:

        1. 系统编译时go intsall abc_name时,系统会到GOPATH的src目录中寻找abc_name目录,然后编译其下的所有go文件。

        2. 同一个目录下的所有go文件的package声明必须相同,所以main方法要单独放到一个文件,否则在eclipse和liteide(go语言集成开发环境,使用的IDE)中都会报错。

        

        3. 对于main方法只能在bin目录下运行,go build path_tomain.go;可以使用-o参数指出输出文件名。go build -o "输出文件" 编译文件。

        4. 可以添加参数go build -gcflags "-N -l" *****,可以更好的便于gdb。详见https://golang.org/doc/gdb

        5. gdb全局变量注意点:如有全局变量a;则写成 p 'main.a';注意单引号不能少。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/275758.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle with as用法

一、简介 with…as关键字,是以‘with’关键字开头的sql语句,在实际工作中,我们经常会遇到同一个查询sql会同时查询多个相同的结果集,即sql一模一样,这时候我们可以将这些相同的sql抽取出来,使用with…as定…

中国(京津冀)太阳能光伏推进大会暨展览会

中国(京津冀)太阳能光伏推进大会暨展览会是一个旨在促进太阳能光伏行业发展的会议和展览会。该事件旨在推动中国在太阳能光伏领域的创新和发展,特别是在京津冀地区。 会议将邀请来自政府、企业、学术界和国际组织的专家和代表,共同探讨太阳能光伏技术、政…

【Redis系列】深入了解 Redis:一种高性能的内存数据库

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Elastic stack(一):Elastic stack简介、Elasticsearch简介、安装

目录 1 Elastic Stack1.1 Elastic Stack介绍1.2 为什么要用到ELK日志分析1.3 ELK的组件1.4 ELK架构原理1、ELK工作流程2、ELFK工作流程 2 Elasticsearch2.1 Elasticsearch简介1、什么是Elasticsearch2、数据来源:索引(indices)和文档&#xf…

docker常用操作-docker私有仓库的搭建(Harbor),并将本地镜像推送至远程仓库中。

1、docker-compose安装,下载docker-compose的最新版本 第一步:创建docker-compose空白存放文件vi /usr/local/bin/docker-compose 第二步:使用curl命令在线下载,并制定写入路径 curl -L "https://github.com/docker/compos…

【牛客】VL68 同步FIFO

描述 请设计带有空满信号的同步FIFO,FIFO的深度和宽度可配置。双口RAM的参考代码和接口信号已给出,请在答案中添加并例化此部分代码。 电路的接口如下图所示。端口说明如下表。 接口电路图如下: 双口RAM端口说明: 端口名I/O描述…

如何在CentOS7搭建DashDot服务器仪表盘并实现远程监控

文章目录 1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2. 部署DashDot应用3. 本地访问DashDot服务4. 安装cpolar内网穿透5. 固定DashDot公网地址 本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘,并且结合cpolar内网穿透工具可以实现公网实时监测服务…

08-java基础-锁之AQSReentrantLockBlockingQueueCountDownLatchSemapho

文章目录 0:AQS简介-常见面试题AQS具备特性state表示资源的可用状态AQS定义两种资源共享方式AQS定义两种队列自定义同步器实现时主要实现以下几种方法:同步等待队列条件等待队列 1:AQS应用之ReentrantLockReentrantLock如何实现synchronized不…

Python | Bootstrap图介绍

在进入Bootstrap 图之前,让我们先了解一下Bootstrap(或Bootstrap 抽样)是什么。 Bootstrap 抽样(Bootstrap Sampling):这是一种方法,我们从一个数据集中重复地取一个样本数据来估计一个总体参数…

Capture One 23:光影魔术师,细节掌控者mac/win版

Capture One 23,不仅仅是一款摄影后期处理软件,它更是摄影师们的得力助手和创意伙伴。这款软件凭借其卓越的性能、丰富的功能和前沿的技术,为摄影师们带来了前所未有的影像处理体验。 Capture One 23软件获取 Capture One 23以其强大的色彩…

【C++教程从0到1入门编程】第八篇:STL中string类的模拟实现

一、 string类的模拟实现 下面是一个列子 #include <iostream> namespace y {class string{public: //string() //无参构造函数// :_str(nullptr)//{}//string(char* str) //有参构造函数// :_str(str)//{}string():_str(new char[1]){_str[0] \0;}string(c…

RuoYi开源项目1-下载并实现运行RuoYi项目

下载并实现运行RuoYi项目 环境需要下载项目项目配置后端项目配置前端项目配置 启动后前端登录页面截图 环境需要 JDK > 8MySQL >5.7Maven > 3.0Node > 12Redis > 3 下图是我的环境配置 下载项目 若依官网 1.进入官网&#xff0c;下载版本如下图RuoYi-Vue前后…

【Vue2】组件通信

父子通信 父 -> 子 子 -> 父 props 校验 props: {校验的属性名: {type: 类型, // Number String Boolean ...required: true, // 是否必填default: 默认值, // 默认值validator (value) {// 自定义校验逻辑return 是否通过校验}} },data 的数据是自己的 → 随便改pr…

【2024-完整版】python爬虫 批量查询自己所有CSDN文章的质量分:附整个实现流程

【2024】批量查询CSDN文章质量分 写在最前面一、分析获取步骤二、获取文章列表1. 前期准备2. 获取文章的接口3. 接口测试&#xff08;更新重点&#xff09; 三、查询质量分1. 前期准备2. 获取文章的接口3. 接口测试 四、python代码实现1. 分步实现2. 批量获取文章信息3. 从exce…

豆瓣书影音存入Notion

使用Python将图书和影视数据存放入Notion中。 &#x1f5bc;️介绍 环境 Python 3.10 &#xff08;建议 3.11 及以上&#xff09;Pycharm / Vs Code / Vs Code Studio 项目结构 │ .env │ main.py - 主函数、执行程序 │ new_book.txt - 上一次更新书籍 │ new_video.…

教师如何搭建学生查询考试分数的平台?

随着信息技术的快速发展&#xff0c;搭建一个学生查询考试分数的平台已经成为现代教育管理的重要组成部分。这样的平台不仅可以提高成绩管理的效率&#xff0c;还能为学生提供便捷、及时的成绩查询服务。那么&#xff0c;作为教师&#xff0c;我们应该如何搭建这样一个平台呢&a…

2024年华为HCIA-DATACOM新增题库(H12-811)

801、[单选题]178/832、在系统视图下键入什么命令可以切换到用户视图? A quit B souter C system-view D user-view 试题答案&#xff1a;A 试题解析&#xff1a;在系统视图下键入quit命令退出到用户视图。因此答案选A。 802、[单选题]“网络管理员在三层交换机上创建了V…

GPT与R 在生态环境领域数据统计分析

原文链接&#xff1a;GPT与R 在生态环境领域数据统计分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597092&idx2&sn0a7ac5cf03d37c7b4659f870a7b71a77&chksmfa823dc3cdf5b4d5ee96a928a1b854a44aff222c82b2b7ebb7ca44b27a621edc4c824115babe&…

Java实现Tron(波场)区块链的开发实践(三)波场链水龙头、WEB3测试实战

上一节我们具体讲到Java实现Tron波场链的逻辑代码实现。 这一节我们通过部署和开发好的代码&#xff0c;针对测试链进行自测开发&#xff0c;准备测试环境。 1. 创建离线地址 首先我们需要一个离线地址&#xff0c;我们不需要在线进行创建&#xff0c;直接可以通过第一节的离…

傅立叶之美:深入研究傅里叶分析背后的原理和数学

一、说明 T傅里叶级数及其伴随的推导是数学在现实世界中最迷人的应用之一。我一直主张通过理解数学来理解我们周围的世界。从使用线性代数设计神经网络&#xff0c;从混沌理论理解太阳系&#xff0c;到弦理论理解宇宙的基本组成部分&#xff0c;数学无处不在。 当然&#xff0c…