前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go两周入门系列-基本数据类型

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

作者头像
用户10002156
发布2023-09-21 20:55:47
1580
发布2023-09-21 20:55:47
举报
文章被收录于专栏:生活处处有BUG生活处处有BUG

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^

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-09-20 22:59,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 生活处处有BUG 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.注释
  • 2.变量
    • 2.1. 变量定义
      • 2.2. 变量初始化
        • 2.3. 短变量声明
        • 3.数值类型
        • 4.字符串类型
        • 5.bool类型
        • 6.零值
        • 7.数据类型转换
        • 8.常量
        • 9.综合例子
        • 我有个大胆的想法
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
        http://www.vxiaotou.com