Golang入门笔记(8)—— init 函数

news2024/10/7 10:19:36

        init 函数 : 每一个源文件都可以包含一个init函数,该函数会在 程序入口main函数执行前 ,被Go运行的框架进行调用。

              测试代码:

package main

import (
	"fmt"
)

func init() {
	fmt.Println("init...")
}

func main() {
	fmt.Println("main...")
}

console 输出:

init...
main...

        很明显,此源文件的init函数是比main函数,优先执行的。所以init函数适合处理一些初始化的工作,然后再调用主函数。

细节讨论:

        1. 如果一个文件中同时包含全局变量的定义,init函数 和 main 函数,则执行的流程是 

        变量的定义 => init函数 => main主函数  (可知变量的定义,比2个函数运行-跑的要早一些)

package main

import (
	"fmt"
)

// 为了看到全局变量是先被初始化的,我们这里先一个函数来完成。
var age int = globalVariablesInit()

func globalVariablesInit() int {
	fmt.Println("globalVariablesInit ... ")
	return 90
}

func init() {
	fmt.Println("init...")
}

func main() {
	fmt.Println("main...")
}

        在做项目的时候,这个知识点有巨大的作用。比如,现在有2个类。

当前类属性,我希望别人访问时就有值,我们可以通过init函数对其进行赋值

       如下函数读取时,就可以拿到在init中赋予的Name和Age 的值了。

package main

import (
	"fmt"
	"go-helloworld/class02/util"  //导入util包 ,以使用的外部函数或变量
)

func main() {
	fmt.Println(util.Name)
	fmt.Println(util.Age)
}
  • 面试题:案例中,如果main.go 和 util.go 都含有变量定义,init 函数,执行的顺序。 

  答: 先执行外部引入文件的    再 执行内部使用处代码,即:

 util.go 变量定义  => util.go  init 函数)

=> main.go 变量定义  => main.go 的init函数  =>  main.go的main函数

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

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

相关文章

vue 项目源码映射失败问题解决

文章目录vue 项目源码映射失败问题解决前言解决方案效果参考vue 项目源码映射失败问题解决 前言 不知何时起,项目控制台调试进入源代码变成编译后的文件了,调试起来十分不便,强迫症十分难受(像是自己英语水平一般,基…

人工智能:PyTorch深度学习框架介绍

目录 1、PyTorch 2、PyTorch常用的工具包 3、PyTorch特点 4、PyTorch不足之处 今天给大家讲解一下PyTorch深度学习框架的一些基础知识,希望对大家理解PyTorch有一定的帮助! 1、PyTorch PyTorch是一个基于Torch的Python机器学习框架。它是由Facebook的人工…

Android Studio实现记单词App,背完四六级一次过~

项目目录一、项目概述二、主要技术三、开发环境四、详细设计1、数据库2、单词详情3、搜索单词五、运行演示一、项目概述 本系统包含高考、四级、六级、托福和雅思词汇五个章节。每个章节分为多个单元,每个单元又包含上百个词汇。可以在单元列表查询单词&#xff0c…

JavaScript基础(12)_构造函数、this

我们每次创建对象时,常常会遇到属性和方法大量相同的情况,如果每次都创建相似的对象,代码就显得冗长多余,所以为了优化,我们往往利用函数调用的形式来简化这些代码,因为普通函数建立的对象并不能区分不同的…

Spark 3.0 - 2.机器学习核心 DataFrame 应用 API 与操作详解

目录 一.引言 二.创建 DataFrame 1.CreateDataFrame 2.RDD toDF By Spark implicits 3.By Read Format File 三.常用处理 API 1.select 选择 2.selectExpr 表达式 3.collect / collectAsList 收集 4.count 统计 5.limit 限制 6.distinct 去重 7.filter 过滤 8.ma…

Matlab:创建分类数组

Matlab:创建分类数组基于字符串数组创建分类数组添加新元素和缺失的元素基于字符串数组创建有序分类数组基于分 bin 数值数据创建有序分类数组此示例说明如何创建分类数组。categorical 是一个数据类型,用来存储值来自一组有限离散类别的数据。这些分类可…

FTX 深度数据复盘

Nov 2022, Sabrina Data Source: Footprint Analytics Dashboards 11月2日,Coindesk 公布了 Alameda 的私人财务文件,这是一家由 FTX 创始人 Sam Bankman-Fried 拥有的风险投资和交易公司,与该交易所密切相关,从而引发了加密货币…

Spring Framework 6.0 框架

Spring Framework 6.0.0 现已正式发布。 “这是 2023 年及以后新一代框架的开始,拥抱了 OpenJDK 和 Java 生态系统中当前和即将到来的创新。同时,我们将其精心设计为针对现代运行时环境的 Spring Framework 5.3.x 的直接升级。” 作为核心框架的重大修订…

脑肽载体Angiopep-2、906480-05-5、TFFYGGSRGKRNNFKTEEY

Angiopep-2 hydrochloride 是脑肽载体。抗肿瘤药物与 Angiopep-2 肽载体的结合可提高其在脑癌中的活性. Angiopep-2 hydrochloride is a brain peptide vector. The conjugation of anticancer agents with the Angiopep-2 peptide vector could increase their efficacy in th…

【正点原子FPGA连载】 第三章 硬件资源详解 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第三章 硬件资源…

提升Mac运行速度的十大小技巧,你用过几个?

经常听到小伙伴在抱怨PC电脑很慢,但是其实Mac电脑随着用的时间增长,运行速度也会越来越慢,那么造成Mac运行慢的原因有很多,可能是操作系统过时未更新,也可能是内存(RAM)不足,以下小编…

终于把下载安装更新的功能整出来了,记录关键点

我的第一个安卓应用终于也有了APP内安装更新的功能(赶上末班车了吗),记录一些关键点,方方面面的。 托管检测更新和下载服务 由于没有服务器,这两个核心功能可以托管到一些比较好的平台。检测我用的是蒲公英分发&…

MySQL8.0分析查询语句EXPLAIN

文章目录学习资料分析查询语句EXPLAINidselect_typepartitions(可略)type【重点】possible_keys和keykey_len【重点】refrows【重点】filteredExtra【重点】EXPLAIN四种输出格式传统格式JSON格式SHOW WARNINGS的使用学习资料 【MySQL数据库教程天花板&a…

《深度学习进阶 自然语言处理》第五章:RNN通俗介绍

文章目录5.1 概率和语言模型5.1.1 概率视角下的word2vec5.1.2 语言模型5.1.3 将CBOW模型用作语言模型的效果怎么样?5.2 RNN5.2.1 循环神经网络5.2.2 展开循环5.2.3 Backpropagation Through Time5.2.4 Truncated BPTT5.2.5 Truncated BPTT的mini-batch学习5.3 RNN的…

会话跟踪技术。

目录 一、会话跟踪技术 二、Cookie 介绍 1、Cookie 基础 2、Cookie 使用细节 三、Session 介绍 1、Session 基本介绍 2、Session的原理分析 3、Session的使用细节 一、会话跟踪技术 ▶ 会话 会话:用户打开浏览器,访问web服务器的资源,会话建立&a…

SAP 直接外部数据库技术配置手册-Oracle

一、操作步骤: 1、SAP Basis配置TNS文件:tnsnames.ora 事务码AL11下的 DIR_SETUPS变量D:\usr\sap\<SID>\SYS\profile双击进入文件路径oracle可以查看到文件 tnsnames.ora (不是路径D:\oracle\<SID>\102\NETWORK\ADMIN下的tnsnames.ora文件),加入如下信息(…

cubeIDE开发, stm32的WIFI通信设计(基于AT指令)

一、stm32的WIFI配置 通常WIFI模块就是一个独立的单片机&#xff0c;只是内置了WFIF通信软件的单片机&#xff0c;并该通信软件提供了AT通信指令集给开发人员&#xff0c;基于这些指令集我们就可以针对项目需要进行二次集成开发出所需的业务应用软件。 本文本文采用的开发板是s…

一、什么是计算机网络

1.1 概述 信件的要素&#xff1a; 打电话时包括连接和接通过程&#xff0c;要关注包括拨打者的状态和接听者的状态&#xff0c;称为TCP连接。发短信时只要发送者将短信发送出去即可&#xff0c;是否被接收或者发送的过程中是否有丢失这些都不关注&#xff0c;称之为UDP连接。计…

CentOS7安装jdk

文章目录前言准备工作一、将jdk的压缩文件传递到虚拟机里面二、解压缩三、配置环境变量前言 在大数据的技术中&#xff0c;Linux的环境是基础&#xff0c;jdk则是这些大数据工具的基础&#xff0c;在这篇博文中&#xff0c;我们主要介绍如何在Linux环境里安装jdk&#xff0c;以…

MySQL8.0优化 - 索引的数据结构

文章目录学习资料索引的数据结构B树常见索引概念聚簇索引特点优点缺点限制二级索引&#xff08;辅助索引、非聚簇索引&#xff09;回表联合索引Innodb的B树索引注意事项1、根页面位置万年不动2、内节点中目录项记录的唯一性3、一个页面最少存储2条记录索引的代价学习资料 【My…