GO学习之 函数和方法

Posted hszstudypy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO学习之 函数和方法相关的知识,希望对你有一定的参考价值。

一.函数的基本介绍

1.为什么使用函数

1)代码冗余

2)不利于维护

3)函数可以解决这个问题

 

2.函数的定义

为完成某一功能的程序指令(语句)的集合,称为函数。

GO中,函数分为:自定义函数、系统函数

 

基本语法:

func 函数名 (形参列表)  (返回值类型列表)  {

执行语句

return 返回值列表

}

 

1)形参列表:表示函数的输入

2)函数中的语句:表示为了实现某一个功能代码块

3)函数可以有返回值,也可以没有

举例:

package main

import "fmt"

func cal(n1 float64, n2 float64, operator byte) float64 {
    // 一个计算的函数
    var res float64
    switch operator {
        case ‘+‘:
            res = n1 + n2
        case ‘-‘:
            res = n1 - n2
        case ‘*‘:
            res = n1 * n2
        case ‘/‘:
            res = n1 / n2
        default:
            fmt.Println("操作符号错误...")
        
    }
    return res
}

func main() {
    // 
    var n1 float64 = 1.2
    var n2 float64 = 2.3
    var operator byte = ‘-‘
    result := cal(n1,n2,operator)
    fmt.Println("res=",result)

}

二.包的基本介绍

1.包的引出

(1)在实际开发中,我们往往需要在不同的文件中,去调用其它文件的定义函数,比如main.go

中,去使用utils.go文件中的函数

(2)不同开发者的函数名取的也是有可能相同的

技术图片

 

 

 

2.包的基本概念

 

说明:go的每一个文件都是属于一个包的,也就是说go是以包的形式来管理文件和项目目录结构的。

 

3.包的介绍

 

包的三大作用

 

1)区分相同名字的函数、变量等标识符

 

2)当程序文件很多时,可以很好的管理项目

 

3)控制函数、变量等访问范围,即作用域

 

包的相关说明

 

包需要开头首字母大写才能被使用。

 

打包的基本语法

 

package utils

 

引包的基本语法

 

import  “包的路径”

 

4.一个基本引包的例子

技术图片

 

 

目录结果如上图

 

其中utils.go内代码是:

 

 

 

package utils

import "fmt"

func Cal(n1 float64, n2 float64, operator byte) float64 {
    // 一个计算的函数
    var res float64
    switch operator {
        case ‘+‘:
            res = n1 + n2
        case ‘-‘:
            res = n1 - n2
        case ‘*‘:
            res = n1 * n2
        case ‘/‘:
            res = n1 / n2
        default:
            fmt.Println("操作符号错误...")
        
    }
    return res
}

main.go内的代码为:

 

package main

import (
    "fmt"
    "gotest01/chapter_06/oa_demo/utils"   // 默认从src开始 
    // 注意这个utils是文件夹的名字
)

func main() {
    // 
    var n1 float64 = 1.2
    var n2 float64 = 2.3
    var operator byte = ‘-‘
    result := utils.Cal(n1,n2,operator) // 这个utils是utils.go下package 后面的名字
    fmt.Println("result=",result)

}

 

demo绝对路径为:C:gostucodesrcgotest01chapter_06oa_demo

导包的路径需要从src目录下开始导包

最后运行结果为:

 

5.包的主要事项和使用细节

1)在给文件打包时,该包对应一个文件夹,比如utils文件对应的包名就是utils,文件的包名通常和文件所在的文件夹名一直,一般为小写字母。[不是一定的]

2)当一个文件要使用其他包函数或变量时,需要先引入对应的包[包名是另外一个文件package后面的那个名字]

1)引入方式1import “包名”

2)引入方式2

import (

包名1”

包名2”

)

3package 指定在文件第一行,然后是import指令。

4)在import包时,路径从$GOPATHsrc下开始,不用带src,编译器会自动从src下开始引入。

3)为了其他包的文件,可以访问到本报的函数的首字母需要大写,类似其他语言的类。这样才能跨包访问。[变量想要被其他包引用,变量也需要首字母大写]

4)在访问其他包函数或变量时,其语法为: 包名.函数名  包名.变量名

5)如果包名较长,GO支持给包取别名,语法为:

import 别名 “包路径”

6)在同一个包下不能有相同的函数名或变量名

7)如果你要编译成一个可执行程序文件,就需要将这个包声明为main,package main

这个是语法规范,如果是写一个库可以自定义。

编译一个可执行文件,在$GOPATH下运行go build main包路径

 

以上是关于GO学习之 函数和方法的主要内容,如果未能解决你的问题,请参考以下文章

go 学习之函数

go 学习之fmt包

Scala深入学习之函数学习

Python面向对象学习之八,装饰器

JS学习之函数内部属性和方法

Python学习之认识函数