go语言基础一(包、变量和函数)

这篇具有很好参考价值的文章主要介绍了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 自动推导

但是要注意的是 := 只能声明出变量,常量无法用这个来进行声明文章来源地址https://www.toymoban.com/news/detail-605558.html

到了这里,关于go语言基础一(包、变量和函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Go 基础篇】Go语言日期与时间函数详解:时间的掌控与转化

    Go语言是一种快速、简洁且高效的编程语言,它在处理日期与时间方面提供了丰富的标准库函数。本文将详细介绍Go语言中处理日期与时间的函数,涵盖常用的日期时间操作、格式化、时区转换等内容,并介绍 time.Time 结构体中的相关方法。 在Go语言中,时间被表示为 time.Tim

    2024年02月11日
    浏览(46)
  • 【Go 基础篇】Go语言 init函数详解:包的初始化与应用

    在Go语言中, init() 函数是一种特殊的函数,用于在包被导入时执行一次性的初始化操作。 init() 函数不需要手动调用,而是在包被导入时自动执行。这使得我们可以在包导入时完成一些必要的初始化工作,确保包的使用具有正确的环境和状态。 本篇博客将深入探讨 init() 函数

    2024年02月11日
    浏览(50)
  • perl脚本语言学习1——基础篇:变量、数组、哈希数组、循环、文件、函数

    2023.3.18 今天下载虚拟机把电脑磁盘内容弄到乱七八糟,难受 发现每次学习遇到一个坎,感觉面前是一座大山,越过去之后又对前途充满了希望 perl:practical extraction report language 实用提取和报表语言 从字面上看主要与文本处理相关 变量定义: my 存储 数字、字符、字符

    2024年02月12日
    浏览(72)
  • 100天精通Golang(基础入门篇)——第15天:深入解析Go语言中函数的应用:从基础到进阶,助您精通函数编程!(进阶)

    🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批

    2024年02月12日
    浏览(68)
  • 100天精通Golang(基础入门篇)——第12天:深入解析Go语言中的集合(Map)及常用函数应用

    🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批

    2024年02月12日
    浏览(50)
  • 软考:中级软件设计师:程序语言基础:表达式,标准分类,法律法规,程序语言特点,函数传值传址

    提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备的 (1)自己的科研经历, 科研内容 ,学习的相关领域知识,要熟悉熟透了 (2)自己的实习经历,做了 什

    2024年02月09日
    浏览(61)
  • 【go语言基础】go中的方法

    先思考一个问题,什么是方法,什么是函数? 方法是从属于某个结构体或者非结构体的。在func这个和方法名中间加了一个特殊的接收器类型,这个接收器可以是结构体类型的或者是非结构体类型的。从属的结构体获取该方法。 函数则没有这种从属关系。 小结: 大多

    2024年02月13日
    浏览(33)
  • Go语言基础(一)

    本文档参考golang官方文档以及一些教程书籍,若文档有错误,欢迎issue 🤗 https://go.dev/doc/tutorial/ 参考书籍《Go语言开发实战》 Go语言是Google公司发布的一种静态型、编译型的开源编程语言,是新时代的 C语言 。Go语言已经成为 云计算时代 的重要基础编程语言。 2012年3月28日,

    2024年02月06日
    浏览(40)
  • go语言基础---8

    go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现。使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序。 ListenAndServe监听TCP地址addr,并且会使用handler参数调用Serve函数处理接收到的连接。handler参数一般会设为nil,此时会使用DefaultServeMux。

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包