这是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
int,uint 和 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 int,var c, java bool——没有明确初始值的变量声明会被赋予它们的 零值。- 数值类型为
0, - 布尔类型为
false, - 字符串为
""(空字符串)。
- 数值类型为
var j int = 1——变量声明可以包含初始值,每个变量对应一个。var python = true——如果初始化值已存在,则可以省略类型,变量会从初始值中获得类型。var j int = 1可以写做j := 1,同样var python = true也可写做python := true- 在函数中,简洁赋值语句
:=可在类型明确的地方代替var声明。 - 函数外的每个语句都必须以关键字开始(
var,func等等),因此,:=结构不能在函数外使用。
- 在函数中,简洁赋值语句
本例中对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语言之旅》