Go语言简介

news2024/11/18 6:20:38

一.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.coloradmin.cn/o/1509400.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手机和电脑同步的好用记事本软件有哪些

我常常需要随手记录各种信息,以便随时查阅和使用。比如,在下班路上,我会用手机记录明天要处理的工作事项、购物清单,或是某个突然迸发的创意想法;而在办公室,我则需要在电脑上整理会议纪要、项目计划&#…

[AutoSar]BSW_Com012 CAN TP 模块介绍

目录 关键词平台说明一、知识储备二、缩写对照表三、CAN TP 所在架构位置四、CAN TP 的主要作用五、CAN TP 在 autosar 架构中的基本概念5.1、CAN TP 的处理模式5.2 数据一致性5.3 静态配置 六、功能规范6.1 Services provided to upper layer6.1.1 Initialization and shutdow…

基于cnn的卷机神经网络的项目毕业课题实践应用(毕业选题-深度学习-卷及神经网络)

这些项目可以作为毕业课题选择,共计超过20个: 往期热门项目回顾: 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别…

Mybatis操作sql报错ibatis.binding.BindingException: Parameter ‘empId‘ not found.

你们好,我是金金金。 场景 在使用Mybatis操作sql语句过程当中,更新操作,报错信息如下:Caused by: org.apache.ibatis.binding.BindingException: Parameter ‘empId’ not found. Available parameters are [arg1, arg0, param1, …

PyTorch搭建AlexNet训练集

本次项目是使用AlexNet实现5种花类的识别。 训练集搭建与LeNet大致代码差不多,但是也有许多新的内容和知识点。 1.导包,不必多说。 import torch import torch.nn as nn from torchvision import transforms, datasets, utils import matplotlib as p…

电子价签前景璀璨,汉朔科技革新零售行业的数字化新篇章

新型商超模式数字化“秘密武器”——电子价签 传统纸质价签,只要商品价格、日期等信息发生变化,就必须重新打印进行手动替换。电子价签的应用使传统的人工申请、调价、打印、营业员去货架前端更换等变价流程均可省略,所有门店的价格由后台统…

Linux命令深入学习——列出帮助手册,开机关机

linux中有多种方法查看一个不熟悉命令的详细信息,如 ls --help,help ls,man ls,info ls 在linux系统中可以使用命令进行开关机以及相关基础操作 同时在进行写入操作时,可以使用快捷键进行操作

图论(二)之最短路问题

最短路 Dijkstra求最短路 文章目录 最短路Dijkstra求最短路栗题思想题目代码代码如下bellman-ford算法分析只能用bellman-ford来解决的题型题目完整代码 spfa求最短路spfa 算法思路明确一下松弛的概念。spfa算法文字说明:spfa 图解: 题目完整代码总结ti…

【LeetCode每日一题】2129. 将标题首字母大写

文章目录 [2129. 将标题首字母大写](https://leetcode.cn/problems/capitalize-the-title/)思路:代码: 2129. 将标题首字母大写 思路: 1.先根据空格,将每个单词切割,依次遍历 2.用StringBuilder来对结构进行拼接 3.…

element plust的表格 el-table数据不按列展示

ElementPlus的表格demo代码放到原生的html <template><el-table :data"tableData" style"width: 100%"><el-table-column prop"date" label"Date" width"180" /><el-table-column prop"name"…

使用Python查询和下载Sentinel卫星数据

欢迎学习本教程,了解如何使用 Python 访问和下载 Sentinel 卫星数据。在深入探讨技术方面之前,让我们先了解一下哨兵卫星是什么以及它们为何如此重要。 哨兵家族。资料来源:欧空局。 Sentinel 卫星是欧洲航天局 (ESA) 开发的一组地球观测任务,是哥白尼计划的一部分,该计划…

Spark性能优化指南——高级篇

调优概述 有的时候&#xff0c;我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜&#xff0c;此时Spark作业的性能会比期望差很多。数据倾斜调优&#xff0c;就是使用各种技术方案解决不同类型的数据倾斜问题&#xff0c;以保证Spark作业的性能。 数据倾斜发生时的现…

一文了解Cornerstone3D中窗宽窗位的3种设置场景及原理

&#x1f506; 引言 在使用Cornerstone3D渲染影像时&#xff0c;有一个常用功能“设置窗宽窗位&#xff08;windowWidth&windowLevel&#xff09;”&#xff0c;通过精确调整窗宽窗位&#xff0c;医生能够更清晰地区分各种组织&#xff0c;如区别软组织、骨骼、脑组织等。…

SSM整合项目(校验)

文章目录 1.前端校验1.需求分析2.HomeView.vue的数据池中添加校验规则3.HomeView.vue 绑定校验规则![image-20240311213428771](https://img-blog.csdnimg.cn/img_convert/7770bfa16814a0efd4eb818c9869a5bd.png)4.验证是否生效5.如果验证不通过&#xff0c;阻止用户提交表单1.…

机器学习之分类回归模型(决策数、随机森林)

回归分析 回归分析属于监督学习方法的一种&#xff0c;主要用于预测连续型目标变量&#xff0c;可以预测、计算趋势以及确定变量之间的关系等。 Regession Evaluation Metrics 以下是一些最流行的回归评估指标: 平均绝对误差(MAE):目标变量的预测值与实际值之间的平均绝对差…

webpack5零基础入门-4使用webpack处理less文件

1.安装less npm install less -D 2.创建less文件 .box{width: 100px;height: 100px;background: red; } 3.引入less文件并打包 执行npx webpack 报错无法识别less文件 4.安装less-loader并配置 npm install less-loader9 -D 这里指定一下版本不然会因为node版本过低报错 …

Java 启动参数 -- 和 -D写法的区别

当我们配置启动1个java 项目通常需要带一些参数 例如 -Denv uat , --spring.profiles.activedev 这些 那么用-D 和 – 的写法区别是什么&#xff1f; 双横线写法 其中这种写法基本上是spring 和 spring 框架独有 最常用的无非是就是上面提到的 --spring.profiles.activede…

【golang】28、用 httptest 做 web server 的 controller 的单测

文章目录 一、构建 HTTP server1.1 model.go1.2 server.go1.3 curl 验证 server 功能1.3.1 新建1.3.2 查询1.3.3 更新1.3.4 删除 二、httptest 测试2.1 完整示例2.2 实现逻辑2.3 其他示例2.4 用 TestMain 避免重复的测试代码2.5 gin 框架的 httptest 一、构建 HTTP server 1.1…

如何配置固定TCP公网地址实现远程访问内网MongoDB数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

JDK环境变量配置-jre\bin、rt.jar、dt.jar、tools.jar

我们主要看下rt.jar、dt.jar、tools.jar的作用&#xff0c;rt.jar在​%JAVA_HOME%\jre\lib&#xff0c;dt.jar和tools.jar在%JAVA_HOME%\lib下。 rt.jar&#xff1a;Java基础类库&#xff0c;也就是Java doc里面看到的所有的类的class文件。 tools.jar&#xff1a;是系统用来编…