6.golang函数、指针、结构体

函数

函数是执行特定任务的代码块。函数接受输入,对输入执行一些计算,然后生成输出。

函数声明

在 go 中声明函数的语法是:

func name(parameter) (result-list){
    //body
}

函数声明以func关键字开头,后跟name(函数名)。在括号中指定参数,后面为函数返回值result-list。参数和返回类型在函数中是可选的。因此,以下语法也是有效的函数声明。

func name() {  
    //body
}

单返回值函数

func plus(a, b int) (res int) {
	c := a + b
	return c
}

func main() {
	a, b := 90, 6
	sumAll := plus(a, b)
	fmt.Println("sum", sumAll)
}

上面程序,函数plus 接受两个 int 类型的值,并返回最终和。输出结果如下:sum 96

多返回值函数

func plus(a, b int) (int, int) {
	c := a + b
	d := a - b
	return c, d
}

func main() {
	a, b := 90, 6
	sumAll, subAll := plus(a, b)
	fmt.Println("sum", sumAll)
	fmt.Println("sub", subAll)
}

输出结果如下:

sum 96
sub 84

命名返回值

如果返回值被命名,相当由于在函数的第一行被声明为变量。

func plus(a, b int) (res int) {
	res = a + b
	return
}

func main() {
	a, b := 90, 6
	sumAll := plus(a, b)
	fmt.Println("sum", sumAll)
}

输出结果如下:sum 96

参数可变函数

func sum(nums ...int) (res int) {
	fmt.Println("len of nums is : ", len(nums))
	res = 0
	for _, v := range nums {
		res += v
	}
	return
}

func main() {
	fmt.Println(sum(1))
	fmt.Println(sum(1, 2))
	fmt.Println(sum(1, 2, 3))
}

输出结果如下:

len of nums is :  1
1
len of nums is :  2
3
len of nums is :  3
6

匿名函数

func main() {
	func(name string) {
		fmt.Println(name)
	}("初辰ge")
}

指针

指针是存储另一个变量的内存地址的变量。

指针的声明

func main() {
	a := 255
	b := &a
	fmt.Println(b)
	fmt.Println(*b)
}

& 操作符获取一个变量的指针地址。* 操作符获取指针地址的值。程序的输出为:

0xc00000a0d8
255

结构体

结构体是由零个或多个任意类型的值聚合成的实体,它可以用于将数据分组为一个单元而不是将它们中的每一个作为单独的值。

声明结构体

用关键字 type 和 struct 用来定义结构体,语法如下:

type StructName struct{
    FieldName type
}

声明结构体并赋值

type Student struct {
	age  int
	name string
}

func main() {
	stu := Student{
		age:  18,
		name: "初辰ge",
	}
	fmt.Println(stu)
}

上述代码输出如下:

{18 初辰ge}

获取结构的各个字段

.运算符用于访问结构的各个字段。

type Student struct {
	age  int
	name string
}

func main() {
	stu := Student{
		age:  18,
		name: "初辰ge",
	}
	fmt.Println(stu.name)
}

上述代码输出如下:

初辰ge

嵌套结构体

一个结构可能包含一个字段,而该字段又是一个结构。这些类型的结构称为嵌套结构。

type Student struct {
	age  int
	name string
	dog  Dog
}
type Dog struct {
	age  int
	name string
}

func main() {
	stu := Student{
		age:  18,
		name: "初辰ge",
		dog: Dog{
			age:  2,
			name: "小白",
		},
	}
	fmt.Println(stu.dog.name)
}

上述代码输出如下:

小白
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初辰ge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值