当前位置: 首页 > news >正文

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

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

package mainimport "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 mainimport "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 语言第一课》。

http://www.lryc.cn/news/242289.html

相关文章:

  • python给视频增加字幕
  • 相机设置参数:黑电平(Black Level)详解和示例
  • Mac Ubuntu双系统解决WiFi和WiFi 5G网络不可用问题
  • 数据分析基础之《matplotlib(2)—折线图》
  • Rust语言入门教程(三) - 函数与模块系统
  • ubuntu22.04 arrch64版在线安装java环境
  • 概率论与数理统计中常见的随机变量分布律、数学期望、方差及其介绍
  • 骨传导耳机的优缺点都有哪些?骨传导耳机值得入手吗?
  • 在ASP.NET Core 中使用 .NET Aspire 消息传递组件
  • NLP学习
  • Linux-Ubuntu环境下搭建SVN服务器
  • python tkinter使用(四)
  • 记录ruoyi-plus-vue部署的问题
  • 如何在springboot项目中使用minio上传下载删除文件
  • SSM个性化旅游管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
  • 4-Docker命令之docker version
  • Redis高并发缓存架构
  • 谨防利用Redis未授权访问漏洞入侵服务器
  • 关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、
  • 使用 JavaScript 进行 API 测试的综合教程
  • Vue 2.0源码分析-Virtual DOM
  • (HAL库版)freeRTOS移植STMF103
  • vue2-axios
  • 创建maven的web项目
  • 使用uniapp开发系统懒加载图片效果
  • 导入PIL时报错
  • MyBatis Generator 插件 详解自动生成代码
  • SkyWalking全景解析:从原理到实现的分布式追踪之旅
  • 新手如何买卖可转债,可转债投资基础入门
  • 研习代码 day39 | 动态规划——完全背包的应用