GO语言函数与封装(package,function) 学习总结教程

1. package import和export

GO语言中package用于封装一个相对独立的功能提供给外部使用。package有如下特征
1.1 package会对应一个目录

    这点与Java类似

1.2 package中的源代码存放目录是package最后一个/结束的准,如package math/rand,那么所源代码都在rand目录下
1.3 main是一个特殊的package名字,类似Java的main函数,GO的可执行程序必须在main package下
1.4 package中的源代码存放目录是package最后一个/结束的准,如package math/rand,那么所源代码都在rand目录下
1.5 源代码文件中,以大写字母开头的函数才会被导出(外部访问)。这点类似Java和访问权限控制,只是太隐晦了。

    但是比Python的约定下划线(_)开头的函数是内部函数但是外部还是可以访问有进步一些。

1.6 import package两种形式

import "fmt"
    import "math/rand"

import(
      "fmt"
      "mat/rand"
    )

2. function

2.1 函数申明可以没有参数,但是函数申明最末尾必须要有括号

    这点不像Ruby那么灵活,函数申明和调用都可以省略到括号。 Python在某个版本中也可以省略,但是后来发现代码风格不统一,所以在Python3.0里面肯定不支持不带括号的函数申明和调用了。

package main

import "fmt"

func main() {
    fmt.Println(add(42, 13))
}

2.2 函数的参数和返回值类型,都是写在最后

    这点与Java,C完全是反的,所以也好记。当然也没有什么对与错,习惯就好了。

package main

import "fmt"

func add(x int, y int) int {
    return x + y
}

2.3 参数类型如果相同,前面类型申明可以省略,只在最后定义前面所有变量类型

package main

import "fmt"

func add(int, y int) int {
    return x + y
}

2.4 可以返回多个值

    这个是高级语言必须的。Java,C这种不支持多返回类型的,当通过返回数组来替代时,然后通过index取数组的值又是魔鬼数字,这时候真抓狂!

package main

import "fmt"

func swap(x, y string) (string, string) {
    return y, x
}

func main() {
    a, b := swap("hello", "world")
    fmt.Println(a, b)
}

2.5 函数体内的变量可以通过在函数申明中作为函数返回值

package main

import "fmt"

func split(sum int) (x, y int) {
    x = sum * 4 / 9
    y = sum - x
    return
}

func main() {
    fmt.Println(split(17))
}

时间: 2024-09-25 23:56:32

GO语言函数与封装(package,function) 学习总结教程的相关文章

c语言函数-c语言学习求助大神:i函数问题

问题描述 c语言学习求助大神:i函数问题 编写函数,根据整型形参n的值,计算以下公式. T=1-1/(2*2)-1/(3*3)-1(4*4)---1(m*m) 例如,若m=5,T=0.536389 解决方案 double t = 1; for (int i =2; i <=m; i++) { t = t - 1 / (double)(m * m); } printf("%lf", t); 解决方案二: 这是个级数问题,当n值较大时,不能使用常规方法来求,这样精度不够,建议使用级数

Go语言函数学习教程_Golang

本文实例讲述了Go语言函数基本用法.分享给大家供大家参考,具体如下: 这里要说一下是Go函数和一些其他语言不一样的地方 1 函数格式不同 复制代码 代码如下: func GetMsg(i int) (r string) {     fmt.Println(i)     r = "hi"     return r } func说明这个是个函数 GetMsg是函数名 (i int) 函数接收一个int参数 (r string) 函数返回一个string类型返回值 2 函数可以返回多个返回值

C语言函数说明与返回值

在学习C语言函数以前,我们需要了解什么是模块化程序设计方法.人们在求解一个复杂问题时,通常采用的是逐步分解.分而治之的方法,也就是把一个大问题分解成若干个比较容易求解的小问题,然后分别求解.程序员在设计一个复杂的应用程序时,往往也是把整个程序划分为若干功能较为单一的程序模块,然后分别予以实现,最后再把所有的程序模块像搭积木一样装配起来,这种在程序设计中分而治之的策略,被称为模块化程序设计方法.在C语言中,函数是程序的基本组成单位,因此可以很方便地用函数作为程序模块来实现C语言程序.利用函数,不仅

深入浅出剖析C语言函数指针与回调函数(二)

上一篇博文的地址: http://blog.csdn.net/morixinguan/article/details/65494239 这节,我们来看看函数指针与回调函数在Linux内核中的应用. 从上节我们了解到,函数指针和回调函数在开发者和用户之间的一个例子,那么这节,我将引用Linux内核中文件操作结构体来详细的说明. 我们首先来看到这个结构体,这段代码位于linux内核的include/linux/fs.h中,由于代码众多,我只截取几个最基本的例子: File_operations文件操

Ext 4 概述(三)之Env命名空间 &amp;amp; 语言增强包 &amp;amp; Ext.Function

Env命名空间 提供浏览器和操作系统的相关信息,还有告诉我们现代浏览器提供了什么功能. Ext.env.Browser 该类提供了全部浏览器的元信息(名称.引擎.版本.是否 Strict 模式等等. Ext.env.FeatureDetector 这是一个在 Ex JS 3 中没有类,完全新的功能,其功能在于检测浏览器特性如何,主要针对现代 HTML5 和 CSS3 的特性,包括移动平台在内的特性列表,有: CSS 变形.动画.转换 Canvas.SVG.VML 触控能力.方向 导航 Geolo

[讨论]函数的封装解释

封装|函数 dingding让我来讲一下什么叫函数封装?? 我自己也不能完全讲清楚的说...只能做到自我理解^^其实封装,字面解释就是封起来装好,事实上也确实是这样子的比如一个函数 function myFunc(a,b){return a+b;}很明显myFunc的用处就是返回两数的和那么myVar = myFunc(1,2); myVar就等于3. 这之中就做到了封装,因为当你要得到两个数相加的时候你只要调用myFunc();然后把你要相加的两个数传进去就可以了,具体myFunc是怎么加的,

Javascript中的匿名函数与封装介绍

 这篇文章主要介绍了Javascript中的匿名函数与封装介绍,本文分析了jQuery 封装.Backbone 封装.Underscore 封装等内容,需要的朋友可以参考下     迷惑了一会儿不同JS库的封装后,终于有了点头绪.大致就是: 代码如下: 创建一个自调用匿名函数,设计参数window,并传入window对象. 而这个过程的目的则是, 代码如下: 使得自身的代码不会被其他代码污染,同时也可以不污染其他代码. jQuery 封装   于是找了个早期版本的jQuery,版本号是1.7.1

C语言函数参数传递的分析

一.值传递和指针传递的概念 (一)值传递 值传递,即按值传递参数,按值传递参数时,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实参变量保持调用前的值不变. 1.形参只能是变量,实参可以是常量.变量或表达式.在被定义的函数中,必须指定形参的类型. 2.实参与形参的个数应一样,类型应一致.字符型和整型可以互相通用. 4.实参传递给形参是实参的值,形参变量在未出现函数调用时,并不占用内存,只在调用时才占用.调用结束后,将释放内存.值传递过程中参数的

c语言基础-对于c语言该如何更好的学习。

问题描述 对于c语言该如何更好的学习. 我是个初学者,想问一下c语言在编程时有什么方法和技巧吗?编程时所用的冒泡法,递归,分别是什么意思 解决方案 C语言并不适合初学者,因为它比较原始和简陋,需要对计算机底层的细节有所了解,实现相同的功能,往往需要比别的语言多很多倍的代码量,而且语法检查不严格,初学者很难驾驭. 很多人学C语言并不是抱着学习本身为目的的,相反,不过是应付一个课程或者等级考试.但是这两者完全不同.所以在回答你的问题以前,先得搞清楚你属于什么情况. 解决方案二: 别急 慢慢来 以后都