Go语言基础 一 (变量类型、函数)| 豆包MarsCode AI刷题

75 阅读4分钟

变量

go 中的变量使用 var 关键字创建,语法格式为var 变量名 变量类型,如下:

var a int

该代码创建了一个 int 类型的变量,名字叫a。

与其他语言相同,go语言也支持在创建时赋值,这一动作也叫初始化。初始化本身也值得拿出来讲一讲,但这篇文章不讲。

var a = 1//这种叫初始化

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

a = 2//这种叫赋值

此外,go提供了一种快速创建变量的方式,我并不知道应该叫他什么,姑且叫他声明赋值吧。如下:

func text(){
    a := 1//声明的同时赋值
}

这种语法必须在函数内才能使用,这个牵扯到另外一个概念就是全局变量,待会写。要注意的是 := 只能声明出变量,常量无法用这个来进行声明。

如果你没有为变量赋值,那么一般情况下,变量默认值是零值,这个零值因数据类型而定,可能是0也可能是nil

go语言也可以批量声明变量,如下:

var (
  v1 int
  v2 int = 2
  v3     = 3
)

这是批量声明的语法,他支持声明与初始化

常量

常量的语法是const 变量名 变量类型,和变量语法相似,而且初始化等操作也是一模一样的。这里唯一值得一提的功能就是iota,他是用在批量声明中的,像这样:

const(
    a int = iota
    b     = iota
    c     = iota
)

他们分别就被赋值为了0、1、2

注意,iota不会被中断,也不会从其他值开始计数,只会从零值开始,每多一个批量声明的变量,就多加一。如下:

const (
  a int = iota
  b     = 2
  c     = iota
  d     = iota
  e     = 1
  f     = iota
)
fmt.Println(a, b, c, d, e, f)
// 0 2 2 3 1 5

他不会因为你中间手动赋值个2,就会重新开始从2开始计数。

全局变量

全局变量其实就是在函数之外声明的变量,这些变量可以被同一个文件下的所有函数调用:

package main

import "fmt"

var a = 100

func main() {
  fmt.Println(a)
}

这里的a就是一个全局变量。 同样的,除了有能在一个文件中使用的全局变量,也有可以全项目使用的变量,就是全局跨包变量。但是注意,如果想跨包引用,变量名首字母必须大写,如下:

var Version int = 2 

类型转换

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

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

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

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

变量类型

整型

名称长度范围
int88bit-128 ~ 127
uint88bit0 ~ 255
int1616bit-32768 ~ 32767
uint1616bit0 ~ 65536
int3232bit
uint3232bit
int6464bit
uint6464bit
int32 / 64bit
uint32 / 64bit

浮点型

var f2 float32 = 2.34

字符型

const ( 
  c1 byte = 65 
  c2 = 'a' 
  c3 rune = '中' 
)

布尔型

关键字bool

字符串

关键字string

函数

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类型两个返回值