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.mzph.cn/news/744347.shtml

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

相关文章

JAVA 服务可观测性最佳实践

前言 本次实践主要是介绍 Java 服务通过无侵入的方式接入观测云进行全面的可观测。 环境信息 系统环境:Ubuntu(主机环境)开发语言:JDK 11.0.18Web 框架:SpringBoot日志框架:LogbackAPM 探针:…

【linux深入剖析】操作系统与用户之间的接口:自定义简易shell制作全过程

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1.shell2.自定义shell的准…

x86_64架构栈帧以及帧指针FP

文章目录 一、x86_64架构寄存器简介二、x86_64架构帧指针FP三、示例四、保存帧指针参考资料 一、x86_64架构寄存器简介 在x86架构中,有8个通用寄存器可用:eax、ebx、ecx、edx、ebp、esp、esi和edi。在x86_64(x64)扩展中&#xff…

第八届蓝桥杯省赛 分巧克力(二分)

题目描述: 思路: 给出N个长方形的长和宽,可以分别看长能被分成多少块,宽能被分为多少块, 也就是 (h/mid) * (w/mid),使其大于等于K 所以我们可以通过二分去找,最大的边长是多少 AC代码: #inc…

深度学习技巧总结

1、监控GPU使用情况 pip install nvitopnvitop -m fullhttps://zhuanlan.zhihu.com/p/577533593 2、本地拉取服务器上tensorboard数据并进行可视化显示 https://blog.csdn.net/Thebest_jack/article/details/125609849 3、服务器打不开pycharm软件 这个是已经有一个软件在运…

SD-WAN解决企业云网融合问题

随着市场竞争不断加剧,企业在提升业务的同时也面临着新兴业务需求的涌现。数字化发展的关键路径包括上云、跨云、云迁移,而广域网连接已不再仅限于总部和分支机构之间。为应对企业云转型对网络架构提出的更高要求,SD-WAN成为企业解决云网融合…

【SpringBoot】自定义工具类实现Excel数据新建表存入MySQL数据库

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 🛸学无止境,不骄不躁,知行合一 文章目录 …

linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)

CSDN 成就一亿技术人! 作者主页:点击! Linux专栏:点击! CSDN 成就一亿技术人! 前言———— Samba 是一个开源软件套件,可为 SMB/CIFS 客户端(包括 Windows)提供文件…

yolov8模型结构

yolov8模型结构 yolo发展历史yolov8简介yolov8模型结构 yolo发展历史 YOLOv1:2015年Joseph Redmon和 Ali Farhadi等 人(华盛顿大学) YOLOv2:2016年Joseph Redmon和Ali Farhadi等人(华盛顿大学) YOLOv3&…

KIOXIA铠侠CM7-R 30T大容量SSD KCMY1RUG30T7 NVMe™ 2.0 PCIe® 5.0

KCMY1RUG30T7是铠侠推出的一款高性能SSD硬盘,以下是对该产品的介绍: 产品规格介绍: 容量:30,720GB 读取速度:10,000 MB/s 写入速度:4,900 MB/s 随机读取:1,600K IOPS 随机写入:1…

【CSP试题回顾】201803-2-碰撞的小球

CSP-201803-2-碰撞的小球 解题思路 通过逐秒模拟每个小球的运动,并在小球到达线段端点或者与其他小球碰撞时改变其移动方向,来计算 t 秒后每个小球的位置。这个问题的关键点在于理解小球的运动和碰撞是独立并且可以预测的,所有的碰撞和方向变…

Linux - 安装 nacos(详细教程)

目录 一、简介二、安装前准备三、下载与安装四、基本配置五、单机模式 一、简介 官网:https://nacos.io/ GitHub:https://github.com/alibaba/nacos Nacos 是阿里巴巴推出的一个新开源项目,它主要是一个更易于构建云原生应用的动态服务发现…

IT营销师行业市场分析报告

一、行业概述 随着数字化转型的浪潮席卷全球,IT营销师行业作为连接信息技术与市场营销的关键桥梁,近年来呈现出强劲的增长态势。IT营销师凭借其独特的技能组合,即深入理解IT产品和服务的技术特性以及精准把握市场需求,正在为企业…

DVWA-master 存储型xss

什么是存储型xss 存储型xss意味着可以与数据库产生交互的,可以直接存在数据库中 先将DVWA安全等级改为低 先随便写点东西上传 我们发现上传的内容会被显示,怎么显示的呢? 它先是上传到数据库中,然后通过数据库查询语句将内容回显 …

MySQL 篇-深入了解事务四大特性及原理

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 事务的概述 2.0 事务的特性 2.1 原子性 2.2 一致性 2.3 持久性 2.4 隔离性 2.4.1 脏读问题 2.4.2 不可重复读问题 2.4.3 幻读问题 3.0 事务的四个隔离级别 3.1…

WAAP全站防护

近年来,随着移动互联网的快速发展,诞生了APP、H5、小程序等多种应用形式,更多的企业核心业务、交易平台都越来越依赖这些新型应用程序。与此同时,越来越多的第三方API接口被调用,API业务带来的Web敞口风险和风险管控链…

H5自适应点状球动态背景个人主页源码

源码名称:自适应点状球动态背景个人主页源码 源码介绍:一款H5自适应点状球背景个人主页源码,带有个人联系方式、个人介绍、足迹、会的技能、相册、旗下站点、留言发邮箱功能【仅前端代码需自行配置或修改为其他功能】。可自行修改为你的个人…

LabVIEW电磁阀特性测控系统

LabVIEW电磁阀特性测控系统 电磁阀作为自动化工程中的重要组成部分,其性能直接影响系统的稳定性和可靠性。设计一种基于LabVIEW的电磁阀特性测控系统,通过高精度数据采集和智能化控制技术,实现电磁阀流阻、响应时间及脉冲特性的准确测量和分…

用机床测头为什么能提升加工中心精度?提高生产效率?

制造业的蓬勃发展为企业提出了更高的精度和效率要求。在现代制造业中,机床测头作为一种关键的检测装置,能够实时监控加工过程中的误差,及时调整,保证加工质量的稳定性,提高加工中心的精度,进而提升生产效率…

打开链接跳转的模式

摘要: 今天遇到一个需求:后台小程序的域名下打开微信客服链接的!但是小程序的域名拒绝任何第三方域名,跨域了!为了上线这微信客服的功能,打开新页签,脱离小程序的域名实现微信客服链接的跳转启动…