当前位置: 首页 > article >正文

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)
}

上述代码输出如下:

小白

http://www.kler.cn/a/153392.html

相关文章:

  • Sentaurus TCAD半导体器件---案例①:传统硅基MOSFET的建模和求解
  • Windows环境 dockertopdesk 部署gitlab
  • 跨越鸿沟-颠覆性产品营销指南笔记
  • 西南科技大学(数据结构A)期末自测练习三
  • UI自动化Selenium find_elements和find_element的区别
  • 【带头学C++】----- 九、类和对象 ---- 9.1 类和对象的基本概念----(9.1.4---9.1.6)
  • (学习笔记)Xposed模块编写(一)
  • 1.2 Ubauntu 使用
  • NRF24L01 无线收发模块与 Arduino 的应用
  • Rust语言入门教程(十) - Trait与泛型
  • argmax(x,axis)
  • 深入理解Zookeeper系列-1.初识Zoookeeper
  • 组合(回溯+剪枝、图解)
  • 附录A 指令集基本原理
  • ThermalLabel SDK for .NET 13.0.23.1113 Crack
  • 2024 年综合网络安全审计清单
  • [SaaS] 广告创意中stable-diffusion的应用
  • 7nm项目之顶层规划——01数据导入
  • 想进国家电网,电气类专业都有哪些就业方向呢?
  • 【二分查找】LeetCode1970:你能穿过矩阵的最后一天