Go语言入门教程(2.变量)

150 阅读3分钟

这是sylu计算机协会第一次技术征文活动

说在前面:

  • 🤖本人初学golang,并非什么大佬
  • 😆我喜欢分享一些刚掌握的知识,你也可以说我“一瓶子不满半瓶子逛”
  • 🥰我很乐于接受批评,如果你觉得我有哪里说的不对,或者哪里说的不好,都很欢迎你来指正

基本类型

Go 的基本类型如下:

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // uint8 的别名

rune // int32 的别名
    // 表示一个 Unicode 码点

float32 float64

complex64 complex128

intuint 和 uintptr 在 32 位系统上通常为 32 位宽,在 64 位系统上则为 64 位宽。 当你需要一个整数值时应使用 int 类型。除非你有特殊的理由使用固定大小或无符号的整数类型

不要被如此多的类型吓到,其实真正常用的类型还是那几个。

变量声明

举个例子来便于说明:

package main

import "fmt"

var i, j int
var c, java bool

func main() {
	var j int = 1
	var python = true
	fmt.Println(i, j, c, java, python)
}
//////////////////
输出:
0 1 false false true
  • var 语句用于声明一个变量列表,跟函数的参数列表一样,类型在最后。
  • var 语句可以出现在包或函数级别。
  • var i, j intvar c, java bool——没有明确初始值的变量声明会被赋予它们的 零值
    • 数值类型为 0
    • 布尔类型为 false
    • 字符串为 ""(空字符串)
  • var j int = 1——变量声明可以包含初始值,每个变量对应一个。
  • var python = true——如果初始化值已存在,则可以省略类型,变量会从初始值中获得类型。
  • var j int = 1可以写做j := 1,同样var python = true也可写做python := true
    • 在函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明。
    • 函数外的每个语句都必须以关键字开始(varfunc 等等),因此,:= 结构不能在函数外使用

本例中对i和j的声明并没有错误哦~

类型转换

表达式 T(v) 将值 v 转换为类型 T,以下面的程序为例:

package main

import "fmt"

func main() {
	var x float64 = -1203.00
	var y int = int(x)
	var z uint = uint(y)
	var o uint = uint(-y)
	fmt.Println(x, y, z, o)
}
//////////////////
输出:
-1203 -1203 18446744073709550413 1203

当然,以下代码

	var x float64 = -1203.00
	var y int = int(x)
	var z uint = uint(y)
	var o uint = uint(-y)

也可以写做更简单的形式

	x := -1203.00
	y := int(x)
	z := uint(y)
	o := uint(-y)

类型推导

在声明一个变量而不指定其类型时(即使用不带类型的 := 语法或 var = 表达式语法),变量的类型由右值推导得出。

当右值声明了类型时,新变量的类型与其相同:

var i int
j := i // j 也是一个 int

举例如下:

package main

import "fmt"

func main() {
	i := 12.03
	j := i
	fmt.Print(i)
	fmt.Printf(" i is of type %T\n", i)
	fmt.Print(j)
	fmt.Printf(" j is of type %T\n", j)
}
////////////////
输出:
12.03 i is of type float64
12.03 j is of type float64

本文学习思路与示例代码参考自《Go语言之旅》