首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初识 Go 语言

初识 Go 语言

作者头像
HelloVass
发布2018-09-12 10:26:54
3690
发布2018-09-12 10:26:54
举报
文章被收录于专栏:Hellovass 的博客Hellovass 的博客

前言

了解 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语言编程》

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-04-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • feature
    • 函数定义
      • 函数调用
        • 不定参数
          • 不定参数类型
      • 参考书籍
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档