Go语言的学习笔记2——Go语言源文件的结构布局

用一个只有main函数的go文件来简单说一下Go语言的源文件结构布局,主要分为包名、引入的包和具体函数。下边是main.go示例代码:

package main

import "fmt"

func main() {
fmt.Println("hello, world")
}

package main就是表明这个文件所在的包是mainimport "fmt"表明从从fmt这个包路径引入文件到当前文件里边,而func main(){}就是在当前文件定义了一个main函数,真正执行功能的地方。fmt.Println("hello, world")中的fmt是包名,与上边import "fmt"fmt包路径是不一样的。先使用go build main.go编译一下,./main执行之后输出了hello, world
在这里插入图片描述

可以看到语句之后没有;,而且文件也没有格式缩进,不过在go中有专门对源文件进行格式化的工具gofmt,比如你可以go fmt main.go格式化源文件。
在这里插入图片描述
gofmt main.go只能把格式化的内容显示出来,不会在源文件上更改,可以试一下。

在一个函数引用其他包里边的函数时,需要先使用包路径引入包,之后使用包名加函数使用。比如下方的代码:

package main

import "github.com/sirupsen/logrus"

func main() {
logrus.SetLevel(logrus.TraceLevel)
logrus.SetFormatter(&logrus.TextFormatter{
                FullTimestamp:   true,
                TimestampFormat: "2022-07-17 00:00:00.000",
})
logrus.Trace("你好,整个世界")
}

可以看到import "github.com/sirupsen/logrus"就是使用包路径引入包,logrus.Println()就是包名加函数。
go fmt importTest.go先格式化一下源文件。
使用go build importTest.go编译的时候报错如下:

importTest.go:3:8: no required module provides package github.com/sirupsen/logrus: go.mod file not found in current directory or any parent directory; see 'go help modules'

在这里插入图片描述

这里就需要使用Go module的功能了。
mkdir importTest创建一个目录,然后mv importTest.go importTest/main.go把上边importTest.go复制到importTest目录里边,并且更名为main.go
在这里插入图片描述

go mod init importTest就会在当前目录里边生成了go.modls -l看一下当前目录内容。
在这里插入图片描述

cat go.mod看一下具体内容。
在这里插入图片描述

go build importTest进行构建,发现报错:

main.go:3:8: no required module provides package github.com/sirupsen/logrus; to add it:
        go get github.com/sirupsen/logrus

在这里插入图片描述

go mod tidy让Go工具自动添加依赖包。
在这里插入图片描述

ls -l可以看一下当前目录里边的内容,发现多了一个go.sum文件,cat go.mod可以看到内容。
在这里插入图片描述

cat go.sum看一下go.sum的内容。
在这里插入图片描述

go build importTest构建,./importTest执行输出为TRAC[242424+08-117 00:00:00.825] 你好,整个世界
在这里插入图片描述

此文章为11月Day 24学习笔记,内容来源于极客时间《Tony Bai · Go 语言第一课》。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AlDente Pro v1.22.2(mac电池最大充电限制工具)

AlDente Pro是一款适用于Mac操作系统的小工具,可以帮助您限制电池充电量以延长电池寿命。通常情况下,电池在充满的状态下会继续接受电源充电,这可能会导致电池寿命缩短。使用AlDente Pro,您可以设置电池只充到特定的充电水平&…

高清动态壁纸软件Live Wallpaper Themes 4K mac中文版功能

Live Wallpaper & Themes 4K mac是一款提供各种高清动态壁纸和主题的应用程序。该应用程序提供了大量的动态壁纸和主题,包括自然、动物、城市、抽象等各种类别,可以满足用户不同的需求。除了壁纸和主题之外,该应用程序还提供了许多其他功…

拦截器详解

一、概述 什么是拦截器? 是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截控制方法的执行。 到底是干啥用的? 拦截请求用的,在指定的方法调用前后,执行在拦截器中编写的程序 …

苹果App加急审核

苹果App加急审核 (注意加急的次数,有的说一年能加急两次,有的说不止两次。遇到紧急问题了就用,非紧急 等一等也行) 1.登录苹果账号 Sign In - Apple ( https://developer.apple.com/contact/app-store/?…

力扣每日一道系列 --- LeetCode 206. 反转链表

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构探索 ✅LeetCode每日一道 🌅 有航道的人,再渺小也不会迷途。 LeetCode 206. 反转链表 思路一:头插 初始化两个指针,cur 和 newhead。…

单片机、ARM、嵌入式开发、Android 底层开发有什么关系?

单片机、ARM、嵌入式开发、Android 底层开发有什么关系? 从我目前的见识来看: 单片机是个系统(比如:51、AVR、PLC...),其中包含了去除了输入输出之外的运算器、控制器、存储器,我们用程序可以非…

CANdelaStudio 使用教程3 新建Service

文章目录 简述Service 的相关配置项1、Protocol Services2、Diagnostic Class Templates3、Supported Diagnostic Classes 新建 Service1、新建 Service2、新建类并添加服务3、 选择支持的服务4、Diagnostic Class Templates:Identification 编辑 Service1、新增服务…

区块链技术将如何影响未来的数字营销?

你是否听腻了区块链和数字营销等流行语,却不明白它们对未来意味着什么?那么,准备好系好安全带吧,因为区块链技术将彻底改变我们对数字营销的看法。从建立消费者信任到提高透明度和效率,其可能性是无限的。 让我们来探…

有序表的详解

目录 有序表的介绍 树的左旋和右旋操作 AVL树的详解 SB树的详解 红黑树的介绍 SkipList的详解 有序表的介绍 有序表是除具备哈希表所具备的功能外,有序表中的内容都是按照key有序排列的,并且增删改查等操作的时间复杂度都是,红黑树&…

【超强笔记软件】Obsidian如何实现免费无限流量无套路云同步?

【超强笔记软件】Obsidian如何实现免费无限流量无套路云同步? 文章目录 【超强笔记软件】Obsidian如何实现免费无限流量无套路云同步?一、简介软件特色演示: 二、使用免费群晖虚拟机搭建群晖Synology Drive服务,实现局域网同步1 安…

Educational Codeforces Round 158 (Rated for Div. 2)(A~E)(贪心,树形DP)

A - Line Trip 题意:有一条路,可以用一条数线来表示。你位于数线上的点 0 ,你想从点 0 到点 x ,再回到点 0。你乘汽车旅行,每行驶 1个单位的距离要花费 1 升汽油。当您从点 0出发时,汽车已加满油(油箱中的…

spring boot的自动装配原理

一:简介 SpringBoot 这款框架几乎是现在企业级开发的标配,使用SpringBoot进行开发,能够大量减少xml配置文件的编写,并且能为我们提供一站式服务。SpringBoot我们只需要导入相关模块的starter,就可以使用相关功能&…

深度学习基于Python+TensorFlow+Django的水果识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介简介技术组合系统功能使用流程 二、功能三、系统四. 总结 一项目简介 # 深度学习基于PythonTensorFlowDjango的水果识别系统介绍 简介 该水果识别系统基于…

医保线上购药系统:引领医疗新潮流

在科技的驱动下,医疗健康服务正经历一场数字化的革新。医保线上购药系统,不仅是一种医疗服务的新选择,更是技术代码为我们的健康管理带来的全新可能。本文将通过一些简单的技术代码示例,深入解析医保线上购药系统的工作原理和优势…

C#,《小白学程序》第五课:队列(Queue)其一,排队的技术与算法

日常生活中常见的排队&#xff0c;软件怎么体现呢&#xff1f; 排队的基本原则是&#xff1a;先到先得&#xff0c;先到先吃&#xff0c;先进先出 1 文本格式 /// <summary> /// 《小白学程序》第五课&#xff1a;队列&#xff08;Queue&#xff09; /// 日常生活中常见…

uniapp IOS从打包到上架流程(详细简单) 原创

uniapp打包好的ipa文件&#xff0c;需要上架到appstore&#xff0c;用户才能通过app store下载使用&#xff0c;因此我们需要将ipa上架到appstore. 我们这篇文章&#xff0c;将教会大家使用windows电脑将uniapp打包好的ipa文件&#xff0c;上架到appstore的方法和详细流程。 …

SpectralGPT: Spectral Foundation Model 论文翻译2

遥感领域的通用大模型 2023.11.13在CVPR发表 原文地址&#xff1a;[2311.07113] SpectralGPT: Spectral Foundation Model (arxiv.org) 实验 ​ 在本节中&#xff0c;我们将严格评估我们的SpectralGPT模型的性能&#xff0c;并对其进行基准测试SOTA基础模型&#xff1a;ResN…

C#/.NET/.NET Core推荐学习书籍(已分类)

前言 古人云&#xff1a;“书中自有黄金屋&#xff0c;书中自有颜如玉”&#xff0c;说明了书籍的重要性。作为程序员&#xff0c;我们需要不断学习以提升自己的核心竞争力。以下是一些优秀的C#/.NET/.NET Core相关学习书籍&#xff0c;值得.NET开发者们学习和专研。书籍已分类…

java学习part10 this

90-面向对象(进阶)-关键字this调用属性、方法、构造器_哔哩哔哩_bilibili 1.java的this java的this性质类似cpp的this&#xff0c; 但它是一种引用&#xff0c;所以用 this. xxx来调用。 this代表当前的类的实例&#xff0c;所以必须和某个对象结合起来使用&#xff0c;不能…

elk 简单操作手册

1.1. 基础概念 EFK不是一个软件,而是一套解决方案,开源软件之间的互相配合使用,高效的满足了很多场合的应用,是目前主流的一种日志系统。 EFK是三个开源软件的缩写,分别表示:Elasticsearch , Filebeat, Kibana , 其中Elasticsearch负责日志保存和搜索,Filebeat负责收集日志,Ki…