本文介绍SpringBoot相关内容。和【跨考菌】一起加油吧~
如果你有收获,记得帮博主一键三连哦
10) 为了简化数据类型定义, Go 支持自定义数据类型
基本语法: type 自定义数据类型名 数据类型 // 理解: 相当于一个别名
案例: type myInt int // 这时 myInt 就等价 int 来使用了.
案例: type mySum func (int, int) int // 这时 mySum 就等价 一个 函数类型 func (int, int) int
11) 支持对函数返回值命名
12) 使用 _ 标识符, 忽略返回值
13) Go 支持可变参数
每一个源文件都可以包含一个 init 函数, 该函数会在 main 函数执行前, 被 Go 运行框架调用, 也就是说 init 会在 main 函数前被调用。
Go 支持匿名函数, 匿名函数就是没有名字的函数, 如果我们某个函数只是希望使用一次, 可以考
虑使用匿名函数, 匿名函数也可以实现多次调用。
使用方式1
在定义匿名函数时就直接调用, 这种方式匿名函数只能调用一次。
使用方式2
将匿名函数赋给一个变量(函数变量), 再通过该变量来调用匿名函数
如果将匿名函数赋给一个全局变量, 那么这个匿名函数, 就成为一个全局匿名函数, 可以在程序有效。
go 的每一个文件都是属于一个包的, 也就是说 go 是以包的形式来管理文件和项目目录结构
的。
包的三大作用
区分相同名字的函数、 变量等标识符
当程序文件很多时,可以很好的管理项目
控制函数、 变量等访问范围, 即作用域
我们将 func Cal 定义到文件 utils.go , 将 utils.go 放到一个包中, 当
其它文件需要使用到 utils.go 的方法时, 可以 import 该包, 就可以使用了。
import (
"包名"
"包名"
)
package 指令在 文件第一行, 然后是 import 指令。
在 import 包时, 路径从 $GOPATH 的 src 下开始, 不用带 src , 编译器会自动从 src 下开始引入
3) 为了让其它包的文件, 可以访问到本包的函数, 则该函数名的首字母需要大写, 类似其它语言
的 public ,这样才能跨包访问。 比如 utils.go 的
4) 在访问其它包函数, 变量时, 其语法是 包名.函数名, 比如这里的 main.go 文件中
5) 如果包名较长, Go 支持给包取别名, 注意细节: 取别名后, 原来的包名就不能使用了
说明: 如果给包取了别名, 则需要使用别名来访问该包的函数和变量。
6) 在同一包下, 不能有相同的函数名(也不能有相同的全局变量名) , 否则报重复定义
7) 如果你要编译成一个可执行程序文件, 就需要将这个包声明为 main , 即 package main .这个就是一个语法规范, 如果你是写一个库 , 包名可以自定义
闭包就是一个函数和与其相关的引用环境组合的一个整体(实体)
请编写一个程序, 具体要求如下
// 1)编写一个函数 makeSuffix(suffix string) 可以接收一个文件后缀名(比如.jpg),并返回一个闭包
// 2)调用闭包,可以传入一个文件名,如果该文件名没有指定的后缀(比如.jpg) ,则返回 文件名.jpg , 如果已经有.jpg后缀,则返回原文件名。
// 3)要求使用闭包的方式完成
// 4)strings.HasSuffix , 该函数可以判断某个字符串是否有指定的后缀。
func makeSuffix(suffix string) func (string) string {
return func (name string) string {
//如果 name 没有指定后缀,则加上,否则就返回原来的名字
if !strings.HasSuffix(name, suffix) {
return name + suffix
}
return name
}
}
在函数中, 程序员经常需要创建资源(比如: 数据库连接、 文件句柄、 锁等) , 为了在函数执行完
毕后, 及时的释放资源, Go 的设计者提供 defer (延时机制)。
defer file.Close() defer connect.Close()
值类型参数默认就是值传递, 而引用类型参数默认就是引用传递。
其实, 不管是值传递还是引用传递, 传递给函数的都是变量的副本, 不同的是, 值传递的是值的拷贝, 引用传递的是地址的拷贝, 一般来说, 地址拷贝效率高, 因为数据量小, 而值拷贝决定拷贝的数据大小, 数据越大, 效率越低。
1) 值类型: 基本数据类型 int 系列, float 系列, bool, string 、 数组和结构体 struct
2) 引用类型: 指针、 slice 切片、 map、 管道 chan、 interface 等都是引用类型
3) 如果希望函数内的变量能修改函数外的变量, 可以传入变量的地址&, 函数内以指针的方式操作变量。 从效果上看类似引用 。 这个案例在前面详解函数使用注意事项的