首页 > 其他分享 >在Go语言中如何正确使用init函数

在Go语言中如何正确使用init函数

时间:2024-03-27 22:58:52浏览次数:23  
标签:函数 redis go init func Go main

1.概念

        init函数是用于初始化应用程序状态的函数。既不接收参数也不返回结果,仅仅是一个func( )类型的函数。当初始化包时,将对包中所有的常量和变量声明进行计算。然后执行init函数。

下面是初始化main包的例子:

package main

import "fmt"

var a = func() int {
	fmt.Println("var")
	return 0
}()

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

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

 程序运行结果如下:

var
init
main

        init函数在初始化包时执行。在下面的例子中,定义了两个包--main和redis,其中main依赖于redis。main.go文件中的main包如下所示:

package main

import (
	"fmt"
	"redis"
)

func init(){
	//...
}

func main(){
	err := redis.Store("foo","bar")
	//...
}

redis.go文件中redis包的内容如下:

package redis

func init(){
	//...
}

func Store(key,value string) error {
	//...
}

main依赖于redis,所以先执行redis包的init函数,然后执行main包的init函数,最后执行main函数本身。

        可以在每个包中定义多个init函数。这样做时,包内的init函数执行顺序基于源文件的字母顺序。例如,如果一个包包含一个a.go文件和一个b.go文件,并且都有init函数,则首先执行a.go

标签:函数,redis,go,init,func,Go,main
From: https://blog.csdn.net/canglonghacker/article/details/137089501

相关文章

  • 抽象的艺术:Go 语言中的编程哲学
    抽象的艺术:Go语言中的编程哲学原创 TimLiu 爱发白日梦的后端 2024-03-2507:00 广东 1人听过 爱发白日梦的后端专注Go语言领域的发展,学习成为更牛逼的架构师,日常分享Go语言、架构、软件工具的使用。179篇原创内容公众号点击上方“名片”,关......
  • 5-3损失函数
    一般来说,监督学习的目标函数由损失函数和正则化项组成。(Objective=Loss+Regularization)Pytorch中的损失函数一般在训练模型时候指定。注意Pytorch中内置的损失函数的参数和tensorflow不同,是y_pred在前,y_true在后,而Tensorflow是y_true在前,y_pred在后。对于回归模型,通常使......
  • 深入理解 Vue 3.0 宏函数:提升组件代码的工程化与可维护性
    Vue3.0宏函数详解:defineProps、defineEmits、defineExpose、defineSlots和defineOptions在Vue3.0中,为了更好地组织和维护组件代码,引入了几个新的宏函数。这些宏函数包括defineProps、defineEmits、defineExpose、defineSlots和defineOptions。本文将详细介绍这五......
  • 2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n
    2024-03-27:用go语言,多维费用背包。给你一个二进制字符串数组strs和两个整数m和n,请你找出并返回strs的最大子集的长度,该子集中最多有m个0和n个1。如果x的所有元素也是y的元素,集合x是集合y的子集。输入:strs=["10","0001","111001","1","0"],m=......
  • C++之函数的重载
    指函数名可以相同,提高复用性函数重载满足条件:1.同一个作用域下2.函数名称相同3.函数参数类型不同或者个数不同或者顺序不同注意:函数的返回值不可以作为函数重载的条件//函数重载需要函数都在同一个作用域下voidfunc(){ cout<<"func的调用!"<<endl;}vo......
  • 欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理
     数据结构、算法总述:数据结构/算法C/C++-CSDN博客欧拉函数欧拉函数(Euler'stotientfunction)是一个与正整数n相关的数论函数,通常用φ(n)表示。定义为小于或等于n的正整数中与n互质的数的个数intphi(intx){intres=x;for(inti=2;i<=x/i;i++)......
  • 推荐 10 个非常有用的 Golang Libraries
    推荐10个非常有用的GolangLibraries原创 GoOfficialBlog GoOfficialBlog 2024-03-2518:16 山东 听全文Go语言的标准库非常好用。通常情况下,你不需要任何额外的库来完成任务。但是在某些情况下,可能需要使用一些库。今天将与你分享日常工作中很有用的10个......
  • go: embed
    go:embed​go:embed​是Go语言在其1.16版本中引入的一个新功能,它允许开发者在编译时将文件或文件夹嵌入到Go程序中。这样做可以简化资源文件的分发,因为它们会被编译到可执行文件里,避免了在运行时需要处理文件路径和分发额外文件的问题。要使用go:embed​,你需要做以下几......
  • 实例、构造函数、原型、原型对象、prototype、__proto__、原型链……
    学习原型链和原型对象,不需要说太多话,只需要给你看看几张图,你自然就懂了。prototype表示原型对象__proto__表示原型实例、构造函数和原型对象以error举例图中的error表示axios抛出的一个错误对象(实例)。宇宙的尽头是nullObject.prototype.__proto__===null......
  • Kruskal最小生成树【详细解释+动图图解】&【sort中的cmp函数】& 【例题:洛谷P3366 【模
    文章目录Kruskal算法简介Kruskal算法前置知识sort中的cmp函数算法思考样例详细示范与解释kruskal模版code↓例题:洛谷P3366【模板】最小生成树code↓完结撒花QWQKruskal算法简介Kr......