《Go 语言第一课》课程学习笔记(二)

初窥门径:一个 Go 程序的结构是怎样的?

创建“hello,world”示例程序

  • 在 Go 语言中编写一个可以打印出“hello,world”的示例程序,我们只需要简单两步,一是创建文件夹,二是开始编写和运行。
  • 通常来说,Go 不会限制我们存储代码的位置,建议创建一个可以集合所有项目的根文件夹(比如:~/goprojects),然后将所有的项目都放在里面。
  • 对于 Linux 系统、macOS 系统,以及 Windows 系统的 PowerShell 终端来说,用下面这个命令就可以建立 hello world 文件夹了:mkdir ~/goprojects mkdir helloworld

编写并运行第一个 Go 程序

  • 首先,我们需要创建一个名为 main.go 的源文件。
    • Go 源文件总是用全小写字母形式的短小单词命名,并且以 .go 扩展名结尾。
    • 如果要在源文件的名字中使用多个单词,我们通常直接是将多个单词连接起来作为源文件名,而不是使用其他分隔符,比如下划线。
    • 我们尽量不要用两个以上的单词组合作为文件名,否则就很难分辨了。
  • 现在,你可以打开刚刚创建的 main.go 文件,键入下面这些代码:
    package mainimport "fmt"func main()  {fmt.Println("hello, world")
    }
    

“hello,world”示例程序的结构

  • package main 这一行代码定义了 Go 中的一个包 package。
    • 包是 Go 语言的基本组成单元,通常使用单个的小写单词命名,一个 Go 程序本质上就是一组包的集合。
    • 所有 Go 代码都有自己隶属的包,在这里我们的“hello,world”示例的所有代码都在一个名为 main 的包中。
    • main 包在 Go 中是一个特殊的包,整个 Go 程序中仅允许存在一个名为 main 的包。
  • main 包中的主要代码是一个名为 main 的函数:
    func main() {fmt.Println("hello, world")
    }
    
    • 当你运行一个可执行的 Go 程序的时候,所有的代码都会从这个入口函数开始运行。
    • Go 语言内置了一套 Go 社区约定俗称的代码风格,并随安装包提供了一个名为 Gofmt 的工具,这个工具可以帮助你将代码自动格式化为约定的风格。
    • 因此,作为 Go 开发人员,请在提交你的代码前使用 Gofmt 格式化你的 Go 源码。
  • main 函数体中之所以可以调用 fmt 包的 Println 函数,还有最后一个原因,那就是
    Println 函数名的首字母是大写的。在 Go 语言中,只有首字母为大写的标识符才是导出的(Exported),才能对包外的代码可见;如果首字母是小写的,那么就说明这个标识符仅限于在声明它的包内可见。

Go 语言中程序是怎么编译的?

  • Go 是一种编译型语言,这意味着只有你编译完 Go 程序之后,才可以将生成的可执行文件交付于其他人,并运行在没有安装 Go 的环境中。
  • Go module 构建模式是在 Go 1.11 版本正式引入的,为的是彻底解决 Go 项目复杂版本依赖的问题,在 Go 1.16 版本中,Go module 已经成为了 Go 默认的包依赖管理机制和 Go 源码构建机制。
  • Go Module 的核心是一个名为 go.mod 的文件,在这个文件中存储了这个 module 对第三方依赖的全部信息。
  • 其实,一个 module 就是一个包的集合,这些包和 module 一起打版本、发布和分发。go.mod 所在的目录被我们称为它声明的 module 的根目录。除了按提示手动添加外,我们也可以使用 go mod tidy 命令,让 Go 工具自动添加相关包依赖。

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

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

相关文章

高光谱 | 矿物识别和分类标签数据制作、农作物病虫害数据分类、土壤有机质含量回归与制图、木材含水量评估和制图

本课程提供一套基于Python编程工具的高光谱数据处理方法和应用案例。 本课程涵盖高光谱遥感的基础、方法和实践。基础篇以学员为中心,用通俗易懂的语言解释高光谱的基本概念和理论,旨在帮助学员深入理解科学原理。方法篇结合Python编程工具,…

阿里云服务器部署RabbitMQ流程

阿里云百科分享使用阿里云服务器部署RabbitMQ流程,RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件,用于在分布式系统中存储转发消息,有良好的易用性、扩展性和高可用性。本文介绍如何通过ECS实例部署Rabbi…

CentOS系统环境搭建(四)——Centos7安装Java

centos系统环境搭建专栏🔗点击跳转 Centos7安装Java 查看云端yum库中目前支持安装的jdk软件包 yum search java|grep jdk选择JDK版本,并安装 yum install -y java-1.8.0-openjdk检查是否安装成功 java -version查看JDK的安装目录 find / -name jav…

【Java面试】redis雪崩、穿透和击穿详解

一 Redis雪崩、穿透和击穿 1. Redis雪崩: Redis雪崩是指在某一时刻,缓存中大量的缓存数据同时失效或过期,导致大量的请求直接打到后端数据库,导致数据库负载剧增,引发性能问题甚至崩溃。这通常是因为缓存数据的过期时…

机器学习笔记:李宏毅 stable diffusion

1 基本框架 ①:文字变成向量 ②:喂入噪声文字encoder,产生中间产物 ③:decoder 还原图片 2 text encoder 这张图越往右下表示效果越好,可以看到text encoder尺寸越大,对后续生成图片的增益越多 3 评价图…

公园游玩必备!新零售模式如何吸引更多游客

随着科技的不断演进,新零售模式正以前所未有的速度改变着我们的购物方式和消费体验。其中,自动售货机作为新零售模式的重要组成部分,以其智能化、便捷性和多样性的特点,正逐渐成为城市中熠熠生辉的一道风景线。 从24小时不间断的运…

LeetCode Top100 Liked 题单(序号34~51)

​34. Find First and Last Position of Element in Sorted Array ​ 题意:找到非递减序列中目标的开头和结尾 我的思路 用二分法把每一个数字都找到,最后返回首尾两个数 代码 Runtime12 ms Beats 33.23% Memory14 MB Beats 5.16% class Solution {…

前端练手小项目--自定义时间(html+css+js)

自定义时间 写文章的因 关于要写这篇文章的原因 是记录在工作上遇到的困难需求,是希望能给大家提供一些解决问题的思路 接下来我描述这个需求的多样性,难点在哪。 勾选勾选框开始时间与结束时间默认显示昨天与今天。取消勾选框开始时间与结束时间清空。…

如何查看线程在哪个cpu核上

1、ps -eLF查看PSR值 2、 taskset -pc $pid(进程/线程) 参考链接:https://blog.csdn.net/test1280/article/details/87993669

Ubuntu修改设置系列--修改ssh端口号的方法(有示例)

原文网址:Ubuntu修改设置系列--修改ssh端口号的方法(有示例)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Ubuntu修改ssh端口号的方法(有示例)。 要达成的目标 ssh添加一个端口:3333,关闭原来的22端口。 1.修改端口 修改配置文件/et…

thingsboard编译安装踩坑记录

thingsboard编译安装踩坑记录 一、编译:二、运行 朋友的thingsboard没人维护,要装新的服务器,啥文档也没有,就让参考官网的文档,版本也比较老3.2.2的,拿过来试了试记录下踩坑的地方。 一、编译:…

get与post如何拼接url与数据的灵活处理,循环的重要性。

get与post拼接url地址不同: let postData {method: "post",data: {op: "/api/setting/maintenanceperiod?period"this.authorizationCode,loadingConfig: {},data: {period:this.authorizationCode}}}; if(this.editData.id){let postData …

Nginx运行Vue项目:基本运行

需求 在Nginx服务器中,运行Vue项目。 说明 Vue项目打包生成的生产文件,是无法直接在浏览器打开的。需要放到Nginx服务器中,才能够访问。 本文章只介绍最基本的情况:Nginx中运行一个Vue项目。 实际生产环境,一个Ng…

mysql 批量给数据表和字段添加注释

1、用命令行导出 mysql数据库中的所有表 首先查看 mysql 的配置文件 “/etc/my.cnf ”,配置中找到 datadir 目录, 将文件导出到 datadir 目录下 我的 datadir 目录是: /var/lib/mysql 连接mysql,执行导出命令 SELECT TABLE_NAM…

解密 AI 客服;在不同硬件设备上运行大型语言模型的可能性

🦉 AI新闻 🚀 微软必应首席执行官称必应聊天优于OpenAI的GPT-4,但成本更高 摘要:微软必应的首席执行官米哈伊尔・帕拉欣表示,必应聊天表现优于OpenAI的GPT-4,但使用了更高成本的检索增强推理技术。必应聊…

中科亿海微ROM使用

标题 ROM(Read-Only Memory,只读存储器)是一种在FPGA(Field-Programmable Gate Array,现场可编程门阵列)中常用的存储器类型。与RAM(Random Access Memory,机存取存储器)…

Nginx安全加固,版本隐藏及HTTP请求头修改方法

1 隐藏nginx版本号 1.1 引言 nginx作为目前较为流行的http server软件,其相关的安全漏洞也非常多,攻击者可以根据我们的nginx版本来了解到相关的漏洞从而针对性的进行攻击。 通过新版本的nginx都会修复一些老版本的已知漏洞,但有时候我们生…

二刷LeetCode--148. 排序链表(C++版本),必会题,思维题

思路,本题其实考察了两个点:合并链表、链表切分。首先从1开始,将链表切成一段一段,因为需要使用归并,所以下一次的切分长度应该是当前切分长度的二倍,每次切分,我们拿出两段,然后将第…

虚拟机与Java虚拟机介绍

1、虚拟机 所谓虚拟机(Virtual Machine),就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。大名鼎鼎的Visual Box,VMware就属于 系统虚…

提示丢失vcomp140.dll怎么办?如何快速修复vcomp140.dll丢失问题

最近我遇到了一个程序启动失败的问题,错误提示显示缺少了vcomp140.dll文件。经过一番研究和尝试,我终于成功修复了这个问题。在这里,我将分享一下我的修复方法。 目录 vcomp140.dll是什么? 如何快速修复呢? vcomp140…