【Go语言入门学习笔记】Part6.包和两个几乎用不到的小Tip

一、前言

这个文章简单了写了一下包、init函数、匿名函数。

二、学习代码

1.包
Go 复制代码
package packTest

import "fmt"

func init() { //如果主函数引用了这个包,主函数执行的时候会先执行包的init
	fmt.Println("hello world")
}

func Add(num1 int, num2 int) int {
	sum := num1 + num2
	return sum
}

// 一个包里不能有相同的函数名,文件名和文件夹名和包名其实可以不一样,建议包名和文件夹名字一样
// 同一个文件夹下的文件,要是同一个包里的
Go 复制代码
package main

import (
	test "GoLanguage/packTest" //可以在这给包起别名
	"fmt"
)

func main() {

	fmt.Println(test.Add(10, 26))

}
2.init函数

先于main执行

Go 复制代码
func init() { //初始化函数,先于main执行,在这创建的局部变量不是全局,应该是用来给全局变量赋值的
	//initnum := 64			不可用
	fmt.Println("initFunction!")
}
3.匿名函数
Go 复制代码
package main

import (
	test "GoLanguage/packTest" //可以在这给包起别名
	"fmt"
)

func main() {

	//下面这个是匿名函数
	result := func(n1 int, n2 int) int {
		return n1 + n2
	}(num1, num2)
	fmt.Println(result)
	//匿名函数赋予一个变量,后面通过这个变量使用,跟函数还是很像的,全局变量这么干就跟普通函数差不多了
	sub := func(n1 int, n2 int) int {
		return n1 - n2
	}
	lastsub := sub(num1, num2)
	fmt.Println(lastsub)
}
相关推荐
lemon_sjdk11 分钟前
ObjectProperty
java·开发语言·算法
大模型码小白17 分钟前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
hh95022 分钟前
Agent Plan x DeepSeek Harness:Agent 供应链安全与第三方插件审计
java·开发语言·安全·agent plan·adg成都社区·adg社区
「QT(C++)开发工程师」1 小时前
C++ std::move 详解
开发语言·c++
matlab代码1 小时前
基于matlab的玉米种子计数设计(GUI界面)【源码58期】
开发语言·matlab
c#上位机1 小时前
C#上位机项目实战——C#的dll项目编译时拷贝到指定目录下
开发语言·c#
Littlehero_1211 小时前
QT自定义控件之内嵌报表(4)(源码开源)
开发语言·qt
晓晓_za8986681 小时前
开源 GEO 优化源码二次开发:贴牌改造与业务模块扩展实践
java·运维·服务器·开发语言·性能优化·开源
噜~噜~噜~1 小时前
操作系统笔记-2.3.2.1 进程互斥的软件实现方法
笔记·操作系统
曹牧2 小时前
C#:数组与列表的差异
开发语言·c#