初识 Go 语言

前言

了解 Go 语言的特性,尽量轻松地掌握这门简洁、有趣却又强大的新语言。

feature

函数定义

举栗,一个加法函数:

package main

import "errors"

func Add(a int, b int) (result int, error error) {

	if a < 0 || b < 0 {
		error = errors.New("参数不能为负数")
		return
	}

	return a + b, nil // 支持多重返回

}

如果参数列表中若干个响铃的参数类型相同,比如上述栗子中的 a,b,则可以省略前面变量的类型声明,举栗:

func Add(a, b int) (result int, error error) {
	//	...
}

如果返回值列表中多个返回值的类型相同,也可以用相同方式合并。 如果函数只有一个返回值,也可以这么写:

func Add(a, b int) int {
	//	...
}

函数调用

Note: 小写字母开头的函数只在本包内可见,大写字母开头的函数才能被其他包使用。 这个规则也适用于类型和变量

不定参数

不定参数类型

不定参数是指函数传入的参数个数为不定数量。为了做到这点,首相需要将函数定义为接受不定参数类型:

func myFunc(args ...int) {

	for _, arg := range args {

		fmt.Println(arg)

	}
}

调用方式,like:myFunc(2, 3 , 4)

像这种 …type 格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数。(这点和 Java 5 的特性蛮像的哎)

内部实现上来说,类型 …type 本质上就是一个数组切片,也就是 []type。想象如果没有这个语法糖,我们应该这么写:

func myFunc(args []int) {

	for _, arg := range args {
		fmt.Println(arg)
	}

}

其实看起来也还行,但是调用起来就比较麻烦了,形如:

myFunc([]int{1, 3, 5, 7, 9})

我们不得不加上 []int{1,3,5,7,9} 来构造一个数组切片实例(烦

参考书籍

《Go语言编程》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏carven

js原生函数之call和apply,bind

call 和 apply 和 bind 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。

10400
来自专栏编程

一起学Python:迭代器

迭代器 迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会...

22990
来自专栏数据结构与算法

06:合法 C 标识符

06:合法 C 标识符 总时间限制:1000ms内存限制:65536kB描述。 C语言标识符要求: 1. 非保留字; 2. 只包含字母、数字及下划线(“_”)。...

39550
来自专栏抠抠空间

列表(List) 的增删改查及其他方法

一、列表的简介     列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而...

417150
来自专栏Java帮帮-微信公众号-技术文章全总结

开发你不能忽略的问题?JavaScript(JS)

一、JavaScript基础加强 ? JavaScript是在浏览器内容运行,无需编译、解释执行动态脚本语言,是一种弱类型语言,所有变量使用var定义。 Ja...

33080
来自专栏Golang语言社区

Go 语言的基本数据类型

0)变量声明 var 变量名字 类型 = 表达式 例: var num int = 10 复制代码 其中“类型”或“= 表达式”两个部分可以省略其中的一个。 1...

434110
来自专栏chenjx85的技术专栏

leetcode-520-Detect Capital

21550
来自专栏轮子工厂

让我第3不开心的事是:同样是程序员,你竟然选择了偷懒~

好几个人在后台催更C语言教程,其实我也很委屈鸭,呆博去浪去了,然后他就义正言辞的和我说不想排版推文,一听就是想要偷懒的借口,口亨~

10430
来自专栏Python研发

一起来学Go --- (go的变量)

变量是几乎所有编程语言中最基本的组成元素,从根本上说,变量相当于是一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名...

12230
来自专栏iOS开发随笔

iOS Swift基础语法(一)

12540

扫码关注云+社区

领取腾讯云代金券