Go两周入门系列-基本数据类型

2023-09-21 20:55:47 浏览数 (1)

1.注释

单行注释

代码语言:javascript复制
  // 单行注释

多行注释

代码语言:javascript复制
/*
  多行注释
 */

2.变量

2.1. 变量定义

语法:

代码语言:javascript复制
var 变量名 变量类型

例子:

代码语言:javascript复制
// 定义一个int类型变量
var i int
// 定义三个bool类型变量,变量名之间使用逗号分隔
var c, python, java bool

2.2. 变量初始化

定义变量的时候直接初始化

语法1:

代码语言:javascript复制
var 变量名 变量类型 = 初始值

例子:

代码语言:javascript复制
// 定义变量i, 数据类型为int, 初始值为10
var i int = 10
// 定义两个int变量i和j,  并且i的初始值为1,j的初始值为2
var i, j int = 1, 2

语法2:

不指定变量的类型,编译器通过初始值的类型,自动推导出变量的类型。

代码语言:javascript复制
var 变量名 = 初始值

例子:

代码语言:javascript复制
// 定义变量i,初始值为10,没有指定i变量的数据类型,编译器会根据10推导出i为int类型
var i = 10

// 定义三个变量c, python, java,他们的初始值分别如下:
// c = true   自动推导出类型bool
// python = false  自动推导出类型bool
// java = "no!" 自动推导出类型string
var c, python, java = true, false, "no!"

注意:一个变量一旦初始化后,变量类型就不能改变了,例如:将一个变量初始化为int类型,就不能将string类型的值赋值给这个变量,否则编译器会报错。

错误例子:

代码语言:javascript复制
var i = 10
i = "hello" // 错误的,类型不匹配。

2.3. 短变量声明

go语言提供了一种定义和初始化变量的快捷方式,短变量声明符号(:=),我们可以不必预先定义变量,而是在使用的时候直接初始化和定义变量

例子:

代码语言:javascript复制
i := 20

i变量没有预先定义,这个时候将变量i初始化为20,因为20是int类型,所以也定义了一个int类型的变量。

例子:

代码语言:javascript复制
// 初始化并定义一个string类型变量
s := "www.xj.com"
// 初始化并且定义一个bool类型变量
ok := false

在同一个作用域内,一个变量只能被定义一次,也就是说短变量声明符,在同一个作用域内,一个变量只能用一次。

例子:

代码语言:javascript复制
// 定义并且初始化变量i
i := 10
i = 200 // 给变量赋值,注意这里等号前面没有冒号

i := 100 // 再次定义并且初始化变量i, 这里编译器会报错,变量重复定义了。

3.数值类型

下面是GO语言支持的基本数值类型

整数

从8位到64整数

代码语言:javascript复制
int  int8  int16  int32  int64

注意int类型,根据不平台可能是32位也可能是64位

无符号整数类型

代码语言:javascript复制
uint uint8 uint16 uint32 uint64 uintptr

uintptr是一种指针类型。

byte 类型,是uint8的别名,占一个字节。

浮点数类型

代码语言:javascript复制
float32 float64

综合例子:

代码语言:javascript复制
var i int32 = 10
var j uint64 = 1000
var d float64 = 25.3

4.字符串类型

字符串使用双引号包括字符,go语言的字符串跟java的字符串类似,可以动态的调整自己的存储空间。

代码语言:javascript复制
// 定义string类型变量
var s string
// 赋值
s = "hello"

或者

代码语言:javascript复制
// 直接初始化一个字符串变量
s := "hello world"

通过len函数获取字符串长度

代码语言:javascript复制
l := len(s)

字符串拼接

代码语言:javascript复制
s := "hello"
// 通过   号拼接字符串
s2 := s   " world"

5.bool类型

布尔类型,只有true和false两种值

代码语言:javascript复制
// 定义一个bool类型变量, 并且初始化为false
var yes bool = false

// 直接初始化一个bool变量,值为true
ok := true

6.零值

零值,也就是默认值,如果在go语言中,我们定义一个变量但是没有给变量一个初始值,那么变量的零值如下:

  • • 数值类型,默认值是0
  • • 布尔值类型,默认值是false
  • • 字符串类型,默认值是 ""

7.数据类型转换

go语言是强类型语言,如果一个变量是int类型,不能直接将int32类型的值赋值给int类型,必须要做类型转换。

对于数值类型,go语言提供了快捷的类型转换语法。

语法:

代码语言:javascript复制
数据类型(变量)

例子:

代码语言:javascript复制
var i int = 100
var j int64
// 将i转换成int64类型
j = int64(i)

var d float64
// 将i转换成float64类型
d = float64(i)

8.常量

常量就是一旦被定义,值就不能被改变。

例子:

代码语言:javascript复制
// 定义常量Pi
const Pi = 3.14
// 定义字符串常量IP
const IP = "127.0.0.1"

// 语法2,一次定义Big和Small两个常量
const (
    Big = 1 << 100
    Small = Big >> 99
)

9.综合例子

文件: main.go

代码语言:javascript复制
package main

// 导入fmt包
import "fmt"

// 在函数外面定义全局变量
var i int = 0

// 入口函数main
func main() {
    // 给变量i赋值
    i = 100

    // 定义string变量
    var s string
    // 给变量s赋值
    s = "hello"

    // 打印变量值
    fmt.Println(s)

    // 短变量声明用法
    yes := false
    str := "www.xj.com"
    code := 200

    // 赋值
    yes = true
    str = "https://www.xj.com"
    code = 301

    // 打印变量值
    fmt.Println(yes)
    fmt.Println(str)
    fmt.Println(code)
}

运行命令:go run main.go

运行后输出:

代码语言:javascript复制
hello
true
https://www.xj.com
301

我有个大胆的想法

小伙伴在平常有没有遇到以下这种情况:遇到技术难题时,网上教程一堆堆,优秀的很多,但也有很多是过时的,或者是copy来copy去,甚至错别字都没改。

我公众号的技术文章,都是亲自校验过的。至少可以保证在发文的一段时间,不会过时。如果你在实操过程中,有遇到问题,可以在同名公众号留言,免费解答,相互学习,相互成长^v^

0 人点赞