go语言基础教程之(包、变量和函数)

 更新时间:2023年07月27日 08:48:51   作者:bvwvd  
这篇文章主要介绍了go语言基础教程之(包、变量和函数)的相关资料,需要的朋友可以参考下

go程序由一个个不同的包组成,程序的入口是名为main的包,比如我们创建一个main文件

main.go

package main

import "fmt"

func main(){
    fmt.Println("hello")
}

go要求每一个go文件的非注释开头必须是``` package xxx``,也就是声明该文件属于哪个包

导出方式

首先我们创如下包文件夹:

我的项目 
├─mytool
│ ├─ alg
│ │  ├─ cmp.go
│ │  └─ mod.go
│ └─ mod.go
└─其他文件

这样,如果我们在main.go里面需要使用cmp.go里面的函数的话需要添加这样的语句:

...
import "项目名称/mytool/alg"
...
    alg.Cmp()
...

其中两个语句分别导出了 alg 包,和调用 alg 包下的 cmp 函数

分组导入

通常情况下,推荐使用分组导入包,也就是这种写法:

import(
    "fmt"
    "text/mytool/alg"
)

这是不推荐的写法,写起来也不方便:

    import "fmt"
    import "text/mytool/alg"

可导出与不可导出

go的包中支持不可导出函数,就像类中的私有函数,声明的方式为函数名首字母是否大小写

在 cmp.go 文件中添加如下两个函数:

func action() {
	fmt.Println("action")
}
func Move(){
    fmt.Printlm("move")
}

其中,只有 Move 函数是可以被调用的,而action函数由于首字母未大小写不可调用,因为他没有被导出

函数

go 中定义函数需要使用 func 关键字

参数

go 的函数可以没有参数,也可以有多个参数,如下:

func novar(){

}
func manyvar(a int, b int){

}

如果参数类型一致可以只写最后一个参数的类型,如下:

func manyvar(a,b int){

}

返回值

go 函数如果有返回值需要在参数后面声明,如下:

func havereturn() int{

}

它将返回一个 int 类型的返回值

返回值也可以有一个指定的名字,其目的是为了增加代码的可读性,如下:

func sum(a, b int) (ans int){
    ans = a + b
    return ans
}

如果一个函数十分的长,那么在开始就确定返回值的名字将大大增加可读性

go 支持函数返回多个返回值,如下:

func manyres() (int, error){
    return 1 , nil
}

它分别返回了int和error类型两个返回值

变量

go 中的变量使用 var 关键字创建,并且在变量名后加变量类型,如下:

var a int

该代码创建了一个 int 类型的变量

变量也可以像其他语言一样通过等于号赋值和初始化,如下:

var a = 1//这叫初始化

//也可以一次初始化多个值
var b, c = false, "AMDYES!"

a = 2//这叫赋值

不想写 var 关键字怎么办,在函数里面可以这么写:

func text(){
    a := 1//这样也相当于创建和初始化变量
}

函数外是不允许这么写的,go 中规定,函数外的每个语句必须以关键字作为开头。

go 中如果初始化没有明确初始值,统一赋值为 go 中默认的零值

go 中的类型转换方式为 T(变量) ,T代表一种变量类型
如下:

var a int = 1
var b = float64(a)

go 的类型推导会在你声明变量时不指定变量类型时触发。它会根据右边表达的结果类型来确定变量的类型,如下:

var a int =1
b := a//b的类型推导为int
c := 1//此时c被推导为int,也就是常数整型在 go 中为 int 
d := 1.1//此时d被推导为float64
e := 1 + 1i//此时为complex128

go 中的常量声明通过const关键字,如下:

const a int = 1
const b = 1.1//也可以不写类型让 go 自动推导

但是要注意的是 := 只能声明出变量,常量无法用这个来进行声明

到此这篇关于go语言基础教程之(包、变量和函数)的文章就介绍到这了,更多相关go语言 包、变量和函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • go1.8之安装配置具体步骤

    go1.8之安装配置具体步骤

    下面小编就为大家带来一篇go1.8之安装配置具体步骤。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Go模板template用法详解

    Go模板template用法详解

    这篇文章主要介绍了Go标准库template模板用法详解;包括GO模板注释,作用域,语法,函数等知识,需要的朋友可以参考下
    2022-04-04
  • 一步步教你打造高效可靠的Go库

    一步步教你打造高效可靠的Go库

    这篇文章主要介绍了一步步教你打造高效可靠的Go库的相关资料,需要的朋友可以参考下
    2023-11-11
  • 构建Golang应用最小Docker镜像的实现

    构建Golang应用最小Docker镜像的实现

    这篇文章主要介绍了构建Golang应用最小Docker镜像的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • GoFrame基于性能测试得知grpool使用场景

    GoFrame基于性能测试得知grpool使用场景

    这篇文章主要为大家介绍了GoFrame基于性能测试得知grpool使用场景示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 对Go语言中的context包源码分析

    对Go语言中的context包源码分析

    这篇文章主要对Go语言中的context包源码进行分析,context包析是1.15,context包定义了一个Context类型过这个Context接口类型, 就可以跨api边界/跨进程传递一些值,下面我们就来对context包源码进行分析,需要的小伙伴可以参考一下
    2022-02-02
  • Golang连接池的几种实现案例小结

    Golang连接池的几种实现案例小结

    这篇文章主要介绍了Golang连接池的几种实现案例小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 使用Go开发硬件驱动程序的流程步骤

    使用Go开发硬件驱动程序的流程步骤

    Golang是一种简洁、高效的编程语言,它的强大并发性能和丰富的标准库使得它成为了开发硬件驱动的理想选择,在本文中,我们将探讨如何使用Golang开发硬件驱动程序,并提供一个实例来帮助你入门,需要的朋友可以参考下
    2023-11-11
  • 15个Golang中时间处理的实用函数

    15个Golang中时间处理的实用函数

    在Go编程中,处理日期和时间是一项常见任务,涉及到精确性和灵活性,本文将介绍一系列实用函数,它们充当time包的包装器,需要的可以参考下
    2024-01-01
  • Go语言面试题之select和channel的用法

    Go语言面试题之select和channel的用法

    金九银十面试季到了(PS:貌似今年一年都是面试季),就业环境很差,导致从业人员不得不卷。本文将重点讲解一下Go面试进阶知识点之select和channel,需要的可以参考一下
    2022-09-09

最新评论