返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >go语言的init()方法有什么用
  • 458
分享到

go语言的init()方法有什么用

init()go语言Golang 2023-05-14 20:05:25 458人浏览 安东尼
摘要

在Go语言中,init()方法用于包的初始化;初始化每个包后,会自动执行init()函数,并且执行优先级高于主函数的执行优先级。init()方法通常用于:1、变量初始化;2、检查/修复状态;3、注册器;4、运行计算。init()函数在程序运

Go语言中,init()方法用于包的初始化;初始化每个包后,会自动执行init()函数,并且执行优先级高于主函数的执行优先级。init()方法通常用于:1、变量初始化;2、检查/修复状态;3、注册器;4、运行计算。init()函数在程序运行时,自动自动被调用执行,不能在代码中主动调用它。不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序。

go语言的init()方法有什么用

教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

Go init函数的详细说明

go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性

程序执行时导入包语句会自动触发包内部init()函数的调用。

初始化每个包后,会自动执行init()函数,并且执行优先级高于主函数的执行优先级。

需要注意的是:init()函数没有参数,也没有返回值。

init函数通常用于:

  • 变量初始化
  • 检查/修复状态
  • 注册器
  • 运行计算

init()函数在程序运行时,自动自动被调用执行,不能在代码中主动调用它。

包初始化执行的顺序如下图所示:

2.png

结果是:

10
Hello 沙河

init()函数有下面的特点:

  • init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等

  • 每个包可以拥有多个init函数

  • 包的每个源文件也可以拥有多个init函数

  • 同一个包中多个init函数的执行顺序go语言没有明确的定义(说明)

  • 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序

  • init函数不能被其他函数调用,而是在main函数执行之前,自动被调用

包初始化

为了使用导入的程序包,必须首先对其进行初始化。初始化始终在单个线程中执行,并且以程序包依赖关系的顺序执行。这由golang的运行时系统控制,如下图所示:

  • 初始化导入的包(递归导入)
  • 计算并为块中声明的变量分配初始值
  • 在包中执行初始化函数

1.png

initial.go

package main
import "fmt"
var _ int64=s()
func init(){
  fmt.Println("init function --->")
}
func s() int64{
  fmt.Println("function s() --->")
  return 1
}
func main(){
  fmt.Println("main --->")
}

执行结果

function s() —>
init function —>
main —>

即使程序包被多次导入,初始化也只需要一次。

特性介绍

init函数不需要传入参数,也不需要返回任何值。与main相比,init没有声明,因此无法引用。

package main
import "fmt"
func init(){
  fmt.Println("init")
}
func main(){
  init()
}

编译上述函数“undefined:init”时发生错误。

每个源文件可以包含一个以上的init函数,请记住,写在每个源文件中的“行进方式”只能包含一个init函数,这有点不同,因此进行下一个验证。

package main
import "fmt"
func init(){
  fmt.Println("init 1")
}
func init(){
  fmt.Println("init2")
}
func main(){
  fmt.Println("main")
}

从上面的示例中,您可以看到每个源文件可以包含多个init函数。

初始化函数的一个常见示例是设置初始表达式的值。

var precomputed=[20]float64{}
func init(){
  var current float64=1
  precomputed[0]=current
  for i:=1;i<len(precomputed);i++{
    precomputed[i]=precomputed[i-1]*1.2
  }
}

因为不可能在上面的代码(这是一条语句)中将for循环用作预先计算的值,所以可以使用init函数来解决此问题。

Go套件汇入规则的副作用

Go非常严格,不允许引用未使用的软件包。但是有时您引用包只是为了调用init函数进行一些初始化。空标识符(即下划线)的目的是解决此问题。

import _ "image/png"

【相关推荐:Go视频教程、编程教学】

以上就是go语言的init()方法有什么用的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: go语言的init()方法有什么用

本文链接: https://lsjlt.com/news/203518.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • go语言的init()方法有什么用
    在go语言中,init()方法用于包的初始化;初始化每个包后,会自动执行init()函数,并且执行优先级高于主函数的执行优先级。init()方法通常用于:1、变量初始化;2、检查/修复状态;3、注册器;4、运行计算。init()函数在程序运...
    99+
    2023-05-14
    init() go语言 Golang
  • go语言的init()方法如何使用
    这篇“go语言的init()方法如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言的init()方法如何使用”文...
    99+
    2023-07-04
  • Go语言之init函数怎么使用
    今天小编给大家分享一下Go语言之init函数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。init函数会在main函...
    99+
    2023-07-02
  • Go语言中init函数和defer延迟调用关键词的方法是什么
    这篇文章主要介绍“Go语言中init函数和defer延迟调用关键词的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go语言中init函数和defer延迟调用关键词的方法是什么”文章能帮助大...
    99+
    2023-07-05
  • Go语言的Handler有什么用
    这篇文章主要介绍“Go语言的Handler有什么用”,在日常操作中,相信很多人在Go语言的Handler有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言的Handler有什么用”的疑惑有所帮助!...
    99+
    2023-06-30
  • go语言有什么作用
    go语言作用有:1、构建高性能的网络服务器,go语言能够处理大量的并发连接,实现高效的网络通信;2、在分布式系统中具有重要的作用,Go语言的并发模型非常适合处理分布式系统的编程;3、广泛用于云计算平台的开发,Go语言的高性能和低内存消耗非常...
    99+
    2023-07-10
  • go语言中ffmpeg使用的方法是什么
    Go语言中使用FFmpeg的方法有两种:使用CGO调用FFmpeg的C语言库,或者使用Go语言封装的FFmpeg库。 使用CGO调...
    99+
    2024-02-29
    go语言 ffmpeg
  • go语言调用函数方法是什么
    在go语言中,定义了函数之后,我们可以通过“函数名()”的方式调用函数,语法“返回值变量列表 = 函数名(参数列表)”。当“()”中包含多个参数时,参数变量以逗号分隔,尾部无须以分号结尾;“返回值变量列表”中,多个返回值使用逗号分隔。本教程...
    99+
    2023-05-14
    Golang go语言 Go
  • go语言if语句的用法是什么
    Go语言的if语句用于根据条件判断来执行不同的代码块。if语句的基本语法如下: if condition { // 执行语句...
    99+
    2023-10-21
    go语言
  • Go语言的接口有什么作用
    本篇内容主要讲解“Go语言的接口有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言的接口有什么作用”吧!Go语言-接口在Go语言中,一个接口类型总...
    99+
    2024-04-02
  • go语言的复数有什么作用
    这篇“go语言的复数有什么作用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言的复数有什么作用”文章吧。在go语言中,...
    99+
    2023-07-04
  • java中init方法的作用是什么
    在Java中,`init`方法是一种特殊的方法,它通常用于初始化对象或执行一些必要的设置和准备工作。主要用途如下: 对象初始化:...
    99+
    2023-10-25
    java
  • go语言有什么好的ide
    用于go语言的ide有:1、Goland,旨在为Go开发者提供的一个符合人体工程学的商业IDE;2、LiteIDE,一款专门针对Go开发的集成开发环境;3、VSCode,一个跨平台开源代码编辑器;4、Sublime Text,一个跨平台的文...
    99+
    2023-05-14
    go语言 Golang
  • go语言的特点有什么
    Go语言具有”简洁易读“、”并发编程“、”高性能“、”内存安全“、”跨平台支持“、”丰富的标准库“和”静态类型“七个特点:1、Go语言的语法简洁明了,去除了一些冗余和复杂的语法元素,代码相对于其他语言来说更加清晰易读;2、Go语言原生支持轻...
    99+
    2023-12-12
    go语言特点 go语言
  • go语言struct方法怎么用
    go语言struct方法的用法:1、定义struct类型,在函数内部,我们可以创建一个struct类型的变量,并为其字段分配值;2、为struct类型定义方法,方法是一种特殊类型的函数,与某个类型关联,要定义一个方法,需要在函数名之前加上一...
    99+
    2023-07-13
  • go语言条件语句的用法是什么
    Go语言的条件语句主要有if语句和switch语句。 if语句的基本语法如下: if condition { // 如果条件为...
    99+
    2023-10-21
    go语言
  • go语言有什么好处
    go语言的好处:1、可直接编译成机器码,不依赖其他库;2、静态类型语言,但是有动态语言的感觉,写起来的效率很高;3、语言层面支持并发;4、内置runtime,支持垃圾回收;5、简单易学;6、内置了大量的库,特别是网络库非常强大;7、内置强大...
    99+
    2023-05-14
    go语言
  • go语言有什么考试
    go语言有Go语言基础知识考试、Go语言高级知识考试、Go语言框架和库考试、Go语言性能优化考试和一些软件工程机构和科技公司会根据自己的需求设计和实施定制的Go语言考试。1、Go语言基础知识考试,目的是验证考生对Go语言的语法、数据类型、变...
    99+
    2023-08-03
  • go语言有什么特点
    go语言的特点:1、简洁、易读和易写;2、静态类型和编译型;3、高效的并发处理;4、丰富的标准库;5、跨平台和可移植性;6、强大的性能;7、原生支持多范式编程;8、静态类型检查和强类型;9、丰富的第三方库和工具。详细介绍:1、简洁、易读和易...
    99+
    2023-12-11
    go语言
  • Go语言中最有效的存储数组方法是什么?
    在Go语言中,数组是一种常见的数据结构,它可以存储一组相同类型的数据。但是在存储大量数据时,如何选择最有效的数组存储方法呢?本文将为您介绍Go语言中最有效的存储数组方法。 使用数组 在Go语言中,最基本的数组存储方法就是使用数组。数组...
    99+
    2023-09-23
    关键字 存储 数组
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作