首页 > 其他分享 >go语言基础一(包、变量和函数)

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

时间:2023-07-26 22:13:06浏览次数:52  
标签:变量 int var func 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 自动推导

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

标签:变量,int,var,func,go,函数
From: https://www.cnblogs.com/bvwvd/p/17583656.html

相关文章

  • Go语言初始化数组的方式
    在Go语言中,数组的初始化有多种方法,我会一一为你列举如下:基本初始化:可以在声明数组时直接指定元素的初始值,由编译器自动推断数组的长度。//方法1:使用数组字面值初始化arr1:=[3]int{1,2,3}//方法2:使用自动推断数组长度arr2:=[...]int{4,5,6}指定索引初始化:可......
  • 函数抛出异常学习
    转自:https://blog.csdn.net/u014694994/article/details/790745661、例子stoi当字符串不符合规范时,会抛出异常。#include<stdexcept>#include<iostream>#include<string>usingnamespacestd;intmain(){std::stringy="253647586946334221002101219......
  • Django框架的学习,主要文件介绍,应用,小白必会三板斧
    今日内容详细MySQL数据库、前端我们之前学习了数据库、前端、Python基础等三大部分,但是,他们三块的内容没有串在一起,也就没办法开发出一个完成的web项目出来,因此,我们通过Django框架把这三者融合在一起,以后我们就可以很方便的开发出各种各样的项目.web应用的简介"""是因为Dja......
  • 浅谈Excel开发:六 Excel 异步自定义函数
    上文介绍了Excel中的自定义函数(UDF),它极大地扩展了Excel插件的功能,使得我们可以将业务逻辑以Excel函数的形式表示,并可以根据这些细粒度的自定义函数,构建各种复杂的分析报表。普通的UDF自定义函数的基本执行逻辑是,Excel接受用户输入的函数表达式,然后通过UDF函数的处理逻辑进行处......
  • java 静态变量赋值
    Java静态变量赋值1.流程概述在Java中,静态变量是类级别的变量,它的值在类加载的时候被初始化,且只有一份拷贝,所有实例共享该变量。要实现Java静态变量的赋值,需要遵循以下步骤:步骤描述1声明一个静态变量2在静态块或静态方法中为静态变量赋值下面将详细介绍......
  • java 静态变量map
    实现Java静态变量Map介绍在Java中,静态变量是类级别的变量,它们在整个程序中只有一份拷贝,可以被所有实例共享。而Map是一种键值对的数据结构,可以用来存储和操作键值对。结合两者,我们可以实现一个静态变量Map,以便在整个程序中共享和访问数据。实现步骤下面是一种实现静态变量Map的......
  • Python基础day53 Django
    web应用的简介因为Django框架是一个专门用来开发web项目的框架1.web应用程序是什么?web应用程序是一种可以通过web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件了2.应用程序与有两种模式Django就是开发的B/S应用程序,所以,我们就认为浏览器就是我们......
  • Django基础介绍
    web应用简介Django框架是一个专门用来开发web项目的框架1.web应用程序是什么web应用程序是一种可以通过web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件2.应用程序又两种模式c/s、b/sDjango就是开发b/s程序的,所依,我们就认为浏览器是客户端,Django框架就......
  • Django
    Web应用的简介Web应用程序是什么?Web应用程序是一种可以通过Web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他软件了。应用程序有两种模式:C/S、B/SDjango就是开发的B/S应用程序,所以,我们就认为浏览器就是我们的客户端,Django框架就是服务端。Web应用程序的优点:......
  • Django模版传值时HTML转义
    前情提要:Django项目中,通过Django模版往前端传值,发现&变成了&amp;原因:模版对上下文传递的字符串进行输出时,会对某些字符串进行转义小于号<转成<大于号>转成>单引号‘转成&#39;双引号“转成"与符号&“转成&amp;转义是由过滤器escape实现的,模版默认带有转义功能使用方......