当前位置: 首页 > 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 语言第一课》。

相关文章:

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

用一个只有main函数的go文件来简单说一下Go语言的源文件结构布局,主要分为包名、引入的包和具体函数。下边是main.go示例代码: package mainimport "fmt"func main() { fmt.Println("hello, world") }package main就是表明这个文件…...

python给视频增加字幕

python给视频增加字幕 安装所需库 在开始之前,我们需要安装一些Python库。主要使用到的库如下: moviepy:用于处理视频和音频的库。 pydub:用于处理音频的库。 speech_recognition:用于语音识别的库。 首先&#xff0…...

相机设置参数:黑电平(Black Level)详解和示例

本文通过原理和示例对相机设置参数“黑电平”进行讲解,以帮助大家理解和使用。 原理 相机中黑电平原理是将电平增大,可以显示更多暗区细节,可能会损失一些亮区,但图像更多的关注暗区,获取完图像信息再减掉。只是为了…...

Mac Ubuntu双系统解决WiFi和WiFi 5G网络不可用问题

文章目录 设备信息1. Ubuntu WiFi不可用解决方式查看Mac的网卡型号根据网卡型号搜索获取到的解决方法查看WiFi名字问题参考链接 2. 解决WiFi重启后失效问题打开终端创建.sh脚本文件编辑脚本文件复制粘贴脚本修改脚本权限创建并编辑systemd service文件复制粘贴下文到systemd se…...

数据分析基础之《matplotlib(2)—折线图》

一、折线图绘制与保存图片 1、matplotlib.pyplot模块 matplotlib.pyplot包含了一系列类似于matlab的画图函数。它的函数作用于当前图形(figure)的当前坐标系(axes) import matplotlib.pyplot as plt 2、折线图绘制与显示 展示城…...

Rust语言入门教程(三) - 函数与模块系统

函数 函数的定义 根据Rust的格式规范,函数名的格式应遵从蛇形命名法,即是用小写字母以及下划线组成,如: fn do_stuff(){ }Rust并不要求函数定义的位置必须在调用它之前,所以如果你习惯于把main函数放在最前面的话&a…...

ubuntu22.04 arrch64版在线安装java环境

脚本 #安装java#!/bin/bashif type -p java; thenecho "Java has been installed."else#2.Installed Java , must install wgetwget -c https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-arm64-vfp-hflt.tar.gz;tar -zxvf ./jdk-8u151-linux-arm6…...

概率论与数理统计中常见的随机变量分布律、数学期望、方差及其介绍

1 离散型随机变量 1.1 0-1分布 设随机变量X的所有可能取值为0与1两个值,其分布律为 若分布律如上所示,则称X服从以P为参数的(0-1)分布或两点分布。记作X~ B(1,p) 0-1分布的分布律利用表格法表示为: X01P1-PP 0-1分布的数学期望E(X) 0 *…...

骨传导耳机的优缺点都有哪些?骨传导耳机值得入手吗?

骨传导耳机的优点还是很多的,相比于传统耳机,骨传导耳机要更值得入手! 下面让我们了解下骨传导耳机的优缺点都有哪些: 一、优点 1、使用更安全 传统的耳机,在使用时会听不到外界的声音,而骨传导耳机通过…...

在ASP.NET Core 中使用 .NET Aspire 消息传递组件

前言 云原生应用程序通常需要可扩展的消息传递解决方案,以提供消息队列、主题和订阅等功能。.NET Aspire 组件简化了连接到各种消息传递提供程序(例如 Azure 服务总线)的过程。在本教程中,小编将为大家介绍如何创建一个 ASP.NET …...

NLP学习

参考:NLP发展之路I - 从词袋模型到Transformer - 知乎 (zhihu.com) NLP大致的发展历史。从最开始的词袋模型,到RNN,到Transformers和BERT,再到ChatGPT,NLP经历了一段不断精进的发展道路。数据驱动和不断完善的端到端的…...

Linux-Ubuntu环境下搭建SVN服务器

Linux-Ubuntu环境下搭建SVN服务器 一、背景二、前置工作2.1确定IP地址保持不变2.2关闭防火墙 三、安装SVN服务器四、修改SVN服务器版本库目录五、调整SVN配置5.1查看需要修改的配置文件5.2修改svnserve.conf文件5.3修改passwd文件,添加账号和密码(window…...

python tkinter使用(四)

本篇文章主要讲下tkinter 的文本框相关. tkinter中用Entry来实现输入框,类似于android中的edittext. 具体的用法如下: 1:空白输入框 如下: name tk.Entry(window) name.pack()2: 设置输入框的默认文案 name tk.Entry(window) name.pack() name.insert(tk.END, "请…...

记录ruoyi-plus-vue部署的问题

ruoyi-vue-plus5.x 后端 ruoyi-vue-plus5.x 前端 前端本地启动命令 # 克隆项目 git clone https://gitee.com/JavaLionLi/plus-ui.git# 安装依赖 npm install --registryhttps://registry.npmmirror.com# 启动服务 npm run dev# 构建生产环境 yarn build:prod # 前端访问地址…...

如何在springboot项目中使用minio上传下载删除文件

引入maven依赖 <!-- minio --> <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.2</version> </dependency>申请 bucket | access_key | secret_key 项目中配置相关参数 mini…...

SSM个性化旅游管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 个性化旅游管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库 &#xff0c;系统主要采用B…...

4-Docker命令之docker version

1.docker version介绍 docker version命令是用于查看docker容器的版本信息 2.docker version用法 docker version [参数] [root@centos79 ~]# docker version --helpUsage: docker version [OPTIONS]Show the Docker version informationOptions:-f, --format string Fo…...

Redis高并发缓存架构

前言&#xff1a; 针对缓存我们并不陌生&#xff0c;而今天所讲的是使用redis作为缓存工具进行缓存数据。redis缓存是将数据保存在内存中的&#xff0c;而内存的珍贵性是不可否认的。所以在缓存之前&#xff0c;我们需要明确缓存的对象&#xff0c;是否有必要缓存&#xff0c;怎…...

谨防利用Redis未授权访问漏洞入侵服务器

说明&#xff1a; Redis是一个开源的&#xff0c;由C语言编写的高性能NoSQL数据库&#xff0c;因其高性能、可扩展、兼容性强&#xff0c;被各大小互联网公司或个人作为内存型存储组件使用。 但是其中有小部分公司或个人开发者&#xff0c;为了方便调试或忽略了安全风险&#…...

关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、

el-input输入无效 原来的代码是 var test null 但是我发现不能输入任何值 反倒修改test的初始值为123是可以的 于是我确定绑定没问题 就是修改的问题 于是改成 var test ref&#xff08;&#xff09; v-model绑定的值改成test.value就可以了 因为ref是相应式的 可以通过输入…...

手把手教你用Conda安装Python的dcor包,并计算距离相关系数(避坑指南)

从零开始&#xff1a;用Conda轻松安装dcor包并计算距离相关系数 在数据科学和统计分析中&#xff0c;我们经常需要衡量变量之间的相关性。传统的皮尔逊相关系数虽然广为人知&#xff0c;但它只能捕捉线性关系&#xff0c;对于非线性关系的识别就显得力不从心。这时候&#xff0…...

Burp Suite实战:精准捕获微信小程序与网页API数据流

1. Burp Suite抓包基础配置 第一次接触Burp Suite抓包的朋友可能会觉得有点复杂&#xff0c;但其实只要跟着步骤走&#xff0c;很快就能上手。我自己刚开始用的时候也踩过不少坑&#xff0c;现在把这些经验都整理出来&#xff0c;希望能帮你少走弯路。 首先得确保你的Burp Suit…...

前端调试进阶:除了‘禁用断点’,Chrome开发者工具里还有这些绕过debugger的冷门操作

前端调试进阶&#xff1a;Chrome开发者工具中绕过debugger的深度策略 调试是前端开发中不可或缺的一环&#xff0c;而debugger语句则是调试过程中最常见的工具之一。然而&#xff0c;在实际开发中&#xff0c;我们经常会遇到一些特殊情况&#xff1a;第三方库中故意设置的无限d…...

脉冲神经网络的多级设计与能效优化实践

1. 脉冲神经网络基础与能效挑战脉冲神经网络(SNN)作为第三代人工神经网络&#xff0c;其核心在于模拟生物神经系统的信息处理机制。与传统人工神经网络(ANN)不同&#xff0c;SNN采用离散的脉冲事件作为信息载体&#xff0c;这种设计带来了独特的计算特性和能效优势。1.1 生物启…...

模型持久化本身不会提升准确率:揭秘训练集复用导致的“虚假精度”陷阱

模型持久化&#xff08;如使用 joblib 保存 decisiontreeclassifier&#xff09;仅用于部署和复用&#xff0c;不改变模型性能&#xff1b;所谓“准确率从57%升至92%”实为误用——第三次运行时用训练数据直接预测&#xff0c;导致严重过拟合评估&#xff0c;结果完全不可信。 …...

浏览器办公革命:如何在Chrome中免费编辑Word、Excel和PPT文档

浏览器办公革命&#xff1a;如何在Chrome中免费编辑Word、Excel和PPT文档 【免费下载链接】se-office se-office扩展&#xff0c;提供基于开放标准的全功能办公生产力套件&#xff0c;基于浏览器预览和编辑office。 项目地址: https://gitcode.com/gh_mirrors/se/se-office …...

Linux上安装哔哩哔哩客户端:3种方法解决B站Linux用户痛点

Linux上安装哔哩哔哩客户端&#xff1a;3种方法解决B站Linux用户痛点 【免费下载链接】bilibili-linux 基于哔哩哔哩官方客户端移植的Linux版本 支持漫游 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-linux 想在Linux系统上流畅观看哔哩哔哩视频吗&#xff1…...

手机热点+ESP-01S:零路由器环境下,手把手搞定TCP客户端与服务器双向通信

手机热点ESP-01S&#xff1a;零路由器环境下实现TCP双向通信的实战指南 在移动开发或物联网原型设计中&#xff0c;我们常遇到没有传统路由器的临时场景——可能是校园实验室的角落、户外测试场地&#xff0c;或是深夜宿舍断电后的应急调试。这时&#xff0c;手机热点成为最可靠…...

如何用macOS自动点击器实现高效自动化操作:完整指南

如何用macOS自动点击器实现高效自动化操作&#xff1a;完整指南 【免费下载链接】macos-auto-clicker A simple auto clicker for macOS Big Sur, Monterey, Ventura, Sonoma and Sequoia. 项目地址: https://gitcode.com/gh_mirrors/ma/macos-auto-clicker 想要摆脱重复…...

RK3588 MPP解码实战:从mpi_dec_test源码剖析到自定义解码器开发

1. RK3588 MPP解码框架初探 第一次接触RK3588的MPP解码框架时&#xff0c;我完全被它强大的视频处理能力震撼到了。这块芯片内置的硬解模块能轻松应对4K60fps的视频解码&#xff0c;功耗却只有软件解码的十分之一。官方提供的mpi_dec_test demo就像一把钥匙&#xff0c;帮我打开…...