Golang基础-8

Go语言基础

介绍

基础

介绍

  • 本文介绍Go语言中包(包声明、包导入与调用、包成员访问权限、init函数、包管理(Go modules)等)、defer关键字、panic 与 recover、go doc 工具等相关知识。

基础

  • Go语言源码高复用是以包的形式划分源代码。
  • 包就是源文件(函数、数据等组成的*.go文件)的集合(目录),将各自相关的功能源码放到同一个目录下,以独立的模块维护,提供给其它项目使用。
包声明
  • Go源文件中,使用 package 声明包的路径,编译器依据包路径找到对应包源代码并编译库文件,包中可包含多个原文件。
  • 包声明使用 package 包名称。
  • 包名称一般与其源文件所在目录的名称(没有强制要求)。
  • 包名称命名使用简短明确的小写字母,同一个包中的源文件必须使用相同的包名。
// 自定义了两个包,整个应用目录结构如下-- test_go01|__ src  // 源文件相关信息|__ main  // main包|__ main.go|__ pkg_my_add  // 自定义包|__ add.go|__ pkg_my_sub  // 自定义包|__ sub.go// main.go
package mainimport ("fmt""pkg_my_add"   // 导入包 pkg_my_add,注意需要配置GOPATH"pkg_my_sub"   // 导入包 pkg_my_sub,注意需要配置GOPATH
)func main() {var a int = 10var b int = 20var c float32 = 30.3var d float32 = 40.5fmt.Println("a + b = ", pkg_my_add.Add(a, b))fmt.Println("c + d = ", pkg_my_add.Add(c, d))fmt.Println("a - b = ", pkg_my_sub.Sub(a, b))fmt.Println("c - d = ", pkg_my_sub.Sub(c, d))
}// add.go
package pkg_my_add  // 声明包// 普通函数
// func Add(a int, b int) int {
// 	return a + b
// }// 使用泛型,支持 int, float32类型
func Add[T int | float32](a, b T) T {return T(a + b)
}// sub.go
package pkg_my_sub  // 声明包// 普通函数
// func Sub(a int, b int) int {
// 	return a - b
// }// 使用泛型,支持 int, float32类型
func Sub[T int | float32](a, b T) T {return T(a - b)
}

输出结果
a + b = 30
c + d = 70.8

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

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

相关文章

微信小程序下载文件时,totalBytesExpectedToWrite为null怎么办?

在微信小程序中使用文件下载的时候,调试的时候发现获取不到文件的总长度totalBytesExpectedToWrite。 解决办法: URL path new URL(url); HttpURLConnection connection (HttpURLConnection) path.openConnection(); // 获取文件总长度 long contentL…

开源知识管理和协作平台:插件丰富,主题精美 | 开源日报 No.209

logseq/logseq Stars: 27.8k License: AGPL-3.0 logseq 是一个注重隐私的开源平台,用于知识管理和协作。 提供强大的知识管理、协作、PDF 标注和任务管理工具支持多种文件格式,包括 Markdown 和 Org-modeWhiteboard 功能可使用空间画布组织想法&#x…

【前端】layui前端框架学习笔记

【前端目录贴】 参考视频:LayUI 参考笔记:https://blog.csdn.net/qq_61313896/category_12432291.html 1.介绍 官网:http://layui.apixx.net/index.html 国人16年开发的框架,拿来即用,门槛低 … 2. LayUi的安装及使用 Layui 是一套开源的 Web UI 组件库&#xff0…

小程序页面滚动?

要在小程序中实现页面滚动&#xff0c;可以使用 <scroll-view> 组件。以下是一个基本的示例&#xff1a; <template><scroll-view class"container" scroll-y><!-- 这里放置页面内容 --><view class"content"><!-- 页面…

[Python] 如何导出PDF文件中的图片

文章目录 一、背景说明二、代码编写三、问题3.1、如何得到图片的xref&#xff1f;3.2、xref有什么用呢&#xff1f; 四、总结 一、背景说明 最近在看一份pdf的书籍&#xff0c;其中有一些图片绘制地比较出色&#xff0c;所以就打算将其复制出来&#xff0c;以便于在需要的时候…

鸿蒙实战开发-如何使用声明式UI编程框架的基础组件

介绍 在本教程中&#xff0c;我们将通过一个简单的样例&#xff0c;学习如何使用声明式UI编程框架的基础组件。本篇Codelab将会使用Image组件、Slider组件、Text组件共同实现一个可调节的风车动画&#xff0c;实现效果如图所示 相关概念 Text组件&#xff1a;文本组件&#x…

Vue与Electron融合之道:从Web App到桌面App的华丽转身

Vue与Electron融合之道&#xff1a;从Web App到桌面App的华丽转身 引言Vue 与 Electron 的天然契合共享技术栈高效开发与部署用户体验升级 Vue 与 Electron 融合实战初始化项目调整Vue项目结构利用 Electron API 增强功能定制桌面应用外观构建与部署 结语 引言 Vue.js 作为一款…

ES6:Map()与WeakMap()

一、Map() 1.1 简介 ES6 提供了 Map 数据结构&#xff0c;它类似于对象&#xff0c;是键值对的集合&#xff0c;但是“键”的范围不限于字符串&#xff0c;各种类型的值&#xff08;包括对象&#xff09;都可以当作键。 我们可以通过 new Map()去创建它。 1.2. Map的创建、…

使用虚幻引擎为AR体验提供动力

Powering AR Experiences with Unreal Engine ​​​​​​​ 目录 1. 虚幻引擎概述 2. 虚幻引擎如何为AR体验提供动力 3. 虚幻引擎中AR体验的组成部分是什么&#xff1f; 4. 使用虚幻引擎创建AR体验 5. 虚幻引擎中AR的优化提示 6. 将互动性融入AR与虚幻引擎 7. 在AR中…

故障诊断模型 | 基于LSTM长短期记忆神经网络的滚动轴承故障诊断(Pytorch)

概述 LSTM(Long Short-Term Memory)是一种常用的循环神经网络(RNN),在时间序列数据处理任务中表现优秀,可用于滚动轴承故障诊断。 滚动轴承故障通常会导致振动信号的变化,这些振动信号可以被视为时间序列数据。LSTM能够捕捉时间序列之间的依赖关系,从而对滚动轴承的故…

天童美语:防患未然 安全同行

在很多故事里&#xff0c;火种代表了生机和希望&#xff0c;尤其当我们回想希腊神话&#xff0c;有很多关于“火种”的情节。但与此同时&#xff0c;我们也需要知道“火种”的危害&#xff0c;以及生活中关于火灾的安全隐患。      去年11月&#xff0c;中国消防在媒体上发…

SQL | SQL 3小时快速入门学习笔记

【【数据库】SQL 3小时快速入门 #数据库教程 #SQL教程 #MySQL教程 #database#Python连接数据库】 课程链接 一、SQL 1.资料库管理系统&#xff08;Database Management System&#xff0c;简称DBMS&#xff09; 是整理资料的软件。其主要功能包括数据的存储、检索、更新和删除…

Linux(CentOS 7 )基于git、maven实现springboot自动化部署

前提 1、已安装git、maven、java环境 不清楚的可以看另一篇文章&#xff1a; https://blog.csdn.net/weixin_44646763/article/details/137041469 2、已为项目设置远程 git 仓库 origin (可以通过&#xff1a;git remote add origin https://github.com/xxx/xxx.git设置) 创…

redis根据key模糊删除

redis根据key模糊删除 编写lua脚本&#xff0c;为a.lua local dbnum ARGV[1] -- 获取数据库索引作为参数 local pattern ARGV[2] -- 获取键的模式作为参数 -- 切换到指定的数据库 redis.call(SELECT, dbnum) -- 使用 KEYS 命令获取所有匹配的键 local keys redis.…

【软考】COCOMO估算模型

目录 1. 说明2. 基本COCOMO模型3. 中级 COCOMO 模型4. 详细 COCOMO 模型 1. 说明 1.英文全称为constructive cost model&#xff0c;构造性成本模型。2.是一种精确的、易于使用的成本估算模型。3.按其详细程度分为基本COCOMO模型、中级COCOMO模型和详细COCOMO模型。4. 2. 基本…

在 KubeSphere 中玩转 KubeEdge 边缘计算

文章目录 一、边缘计算概念二、边缘计算痛点三、边缘计算应用场景四、常见边缘计算框架五、KubeEdge 架构4.1、kubeedge云端4.2、kubeedge边端4.3、安装部署4.3.1、安装 Cloudcore4.3.2、添加边缘节点4.3.3、开启Metrics& 日志 4.4、运行应用 六、云边服务互访6.1、部署 Ed…

LLM--提示词Propmt的概念、作用及如何设计提示词

文章目录 1. 什么是提示词&#xff1f;2. 提示词的作用3. 如何设计提示词&#xff1f;3.1. 提供详细的信息3.2. 指定角色3.3. 使用分隔符和特殊符号3.4. 提供示例3.5. 少量示例的思维链&#xff08;COT&#xff09;模型3.6. 思维树&#xff08;TOT&#xff09;模型3.7. 自洽性 …

论文笔记 - :MonoLSS: Learnable Sample Selection For Monocular 3D Detection

论文笔记✍MonoLSS: Learnable Sample Selection For Monocular 3D Detection &#x1f4dc; Abstract &#x1f528; 主流做法限制 &#xff1a; 以前的工作以启发式的方式使用特征来学习 3D 属性&#xff0c;没有考虑到不适当的特征可能会产生不利影响。 &#x1f528; 本…

C++刷题篇——07检测热点字符

一、题目 二、解题思路 1、使用map&#xff0c;key为元素&#xff0c;value为出现的次数 2、由于sort不适用于map&#xff0c;因此要将map的key、value放到vector中&#xff0c;再对vector排序 3、对map排序&#xff1a;方法1&#xff1a;使用二维数组vector<vector<>…

力扣 1143. 最长公共子序列

题目来源&#xff1a;https://leetcode.cn/problems/longest-common-subsequence/description/ C题解&#xff08;思路来源代码随想录&#xff09;&#xff1a;动态规划。 1. 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j]&#xff1a;长度为[0, i - 1]…