Go语言基础语法和基本数据类型知识巩固

 更新时间:2023年11月06日 10:16:37   作者:陈明勇  
这篇文章主要为大家介绍了Go语言基础语法和基本数据类型知识巩固,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

快速上手一门新的语言,首先要做的就是熟悉新语言的基本语法和基本数据类型,本文将对 Go 语言的基础语法和基本数据类型进行介绍。

Hello,World!

记得当初学习 C 语言的时候,第一个演示程序是输出 Hello World!,Go 官网的第一个案例也是输出 Hello,World!

package main // 包声明
import "fmt" // 包导入
// func 函数关键字
func main() {
    fmt.Println("Hello,World!")
}

从 Hello,World! 输出案例可知:

  • 声明包的关键字是 package ;
  • 导包的关键字是 import
  • 使用包里面的函数以 包名.函数 这种格式进行;
  • 函数的声明关键字是 func

有关 main 函数的一些要点

1、`main` 函数必须在 `main` 包里。

2、当 `main` 函数所在的文件被命名为 `main.go` 时,可以直接使用 `go run ./main.go` 命令直接运行程序。

3、当 `main` 函数所在的文件名字不为 `main.go`,需要分以下两种情况,假设所在文件的名字为 `a.go`。

当 a.go 文件里没有引用其他文件的变量等元素时,可以直接使用 go run ./a.go 运行。

package main // 包声明
import "fmt" // 包导入
// func 函数关键字
func main() {
    fmt.Println("Hello,World!")
}

运行文件

D:\go_projects\src\go_basic> go run .\main.go
Hello,World!

当 a.go 文件里有引用其他文件的变量等元素时,需要先使用 go build ./a.go ./b.go 生成可执行文件,再运行 exe 可执行文件。

package main // a.go 文件
import "fmt"
func main() {
    fmt.Println(name)
}
package main // b.go 文件
var name string = "cmy"

直接运行文件会报错

D:\go_projects\src\go_basic> go run .\a.go
# command-line-arguments
.\a.go:6:14: undefined: name

正确的运行方式

D:\go_projects\src\go_basic> go build .\a.go .\b.go
D:\go_projects\src\go_basic> ls

    目录: D:\go_projects\src\go_basic
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022-11-23      1:39                .idea
-a----        2022-11-23      2:03        1950720 a.exe
-a----        2022-11-23      1:50             63 a.go
-a----        2022-11-23      1:52             38 b.go
-a----        2022-11-23      1:57            127 main.go

D:\go_projects\src\go_basic> .\a.exe
cmy

关键字

除了上面提到的几个关键字以外,Go 语言还有其他关键字,一共 25 个关键字。

package

声明

语法格式: package xxx

package main

包名字由英文或英文与下划线组合组成。

注意点:

包声明时名字可以和文件夹的命名不一样。

同一个文件夹内,每个 Go 文件的包声明必须一致,否则会报错。

package hello // a.go 文件
package hello // b.go 文件

引入

包的引入方式:import [alias] xxx,alice 是一个可选值,为包起别名。

import "fmt"
import f "fmt" // 起别名

注意点:

引入包而没有使用,会报错。

匿名引入:

import _ "fmt" // 起别名

一般匿名引入,是为了使用包里面的 init 函数,它先于 main 函数之前执行-

func init() {
}

基本数据类型

Go 语言中的数据类型有很多,除了本文介绍的基本数据类型以外,还有指针、数组、结构体 struct、管道 channel、函数 func 、切片 

整形数据类型

有符号整数类型

类型占用存储空间表数范围
int81字节-2^7 ~ 2^7-1 (-128-127)
int162字节-2^15 ~ 2^15-1 (-32768-32767)
int324字节-2^31 ~ 2^31-1 (-2147483648-2147483647)
int648字节-2^63 ~ 2^63-1

无符号整数类型

类型占用存储空间表数范围
uint81字节0~255
uint162字节0~2^16-1
uint324字节0~2^31-1
uint648字节0~2^63-1

其他整数类型

类型有无符号占用存储空间表数范围
int32位系统-4字节, 64位系统-8字节-2^31 ~ 2^31-1, -2^63 ~ 2^63-1
uint32位系统-4字节, 4位系统-8字节0 ~ 2^31-1, 0~2^64-1
rune等价 int32-2^31 ~ 2^31-1
byte等价 unint80~255

浮点数据类型

类型占用存储空间表数范围
float324字节-3.403E38~3.403E38
float648字节-1.798E308~1.798E308

字符类型

  • Go 没有字符类型,如果要存单个字符(字母),可使用 byte 类型代替。
  • Go 中字符使用 UTF-8 编码。

布尔类型

  • 布尔类型在 Go 中对应 bool 类型,它只允许取值为 true 和 false
  • 布尔类型占 1 个字节。
  • 布尔类型适用于逻辑运算,一般用于程序流程控制。

字符串类型

  • 字符串不可变(指的是其中字符的值不能变,例如 var name string = "cmy",然后操作 name[0]='a' 是不行的)。
  • 如果字符串中需要换行或者字符串较复杂,可以使用反引号 ``。

基本数据类型的默认值

数据类型默认值
整数类型0
浮点类型0
布尔类型false
字符串类型""

常量和变量声明

常量声明:const xxx type = value

const realName string = "chenmingyong"
const Age int = 18

变量声明:var xxx type = value

var realName string = "chenmingyong"
var Age int = 18

在定义局部变量(方法或函数内部的变量)时,还可以使用 := 去声明,切记是局部变量,全局变量不能使用 :=,否则会报错。

realName := "chenmingyong"
Age := 18

Go 会使用类型推断来判断类型,数字会被理解为 int 或者 float64,字符串会被理解为 string

注意点:

  • Go 推荐使用驼峰命名的方式。
  • 常量被声明后,后续的值不能被修改。
  • 常量和变量的名字,首字母是否大写,决定着它是否能够被包外文件访问,大写则可以被包外的 Go 文件访问,小写则认为是私有的,只能被包内的 Go 文件访问。
  • 变量声明之后,没有使用,编译时会报错。
  • 类型不匹配不能被赋值。
  • 同一个作用域下,变量只能声明一次。

以上就是Go语言基础语法和基本数据类型知识巩固的详细内容,更多关于Go语言语法基本数据类型的资料请关注脚本之家其它相关文章!

相关文章

  • GO项目部署Linux服务器的实现示例

    GO项目部署Linux服务器的实现示例

    本文主要介绍了GO项目部署Linux服务器的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • Golang并发操作中常见的读写锁详析

    Golang并发操作中常见的读写锁详析

    Golang中的锁机制主要包含互斥锁和读写锁互斥锁互斥锁是传统并发程序对共享资源进行控制访问的主要手段,这篇文章主要给大家介绍了关于Golang并发操作中常见的读写锁的相关资料,需要的朋友可以参考下
    2021-08-08
  • Go语言中append函数用法分析

    Go语言中append函数用法分析

    这篇文章主要介绍了Go语言中append函数用法,对比使用append函数与不使用append函数的两个实例,详细分析了Go语言中append函数的功能,需要的朋友可以参考下
    2015-02-02
  • 解决go获取文件md5值不正确的问题

    解决go获取文件md5值不正确的问题

    本文主要介绍了解决go获取文件md5值不正确的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • golang metrics各个指标含义讲解说明

    golang metrics各个指标含义讲解说明

    这篇文章主要为大家介绍了golang metrics各个指标含义讲解说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Go高级特性探究之信号处理详解

    Go高级特性探究之信号处理详解

    信号是在Unix和类Unix操作系统中用于通知进程发生了事件或异常的通信机制,本文主要来介绍一下Go中的信号处理的方法,需要的可以参考一下
    2023-06-06
  • go语言LeetCode题解944删列造序示例详解

    go语言LeetCode题解944删列造序示例详解

    这篇文章主要为大家介绍了go语言LeetCode题解944删列造序示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • golang获取客户端ip的实现

    golang获取客户端ip的实现

    本文主要介绍了golang获取客户端ip的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • CSP communicating sequential processes并发模型

    CSP communicating sequential processes并发模型

    这篇文章主要为大家介绍了CSP communicating sequential processes并发模型,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • golang gin 框架 异步同步 goroutine 并发操作

    golang gin 框架 异步同步 goroutine 并发操作

    这篇文章主要介绍了golang gin 框架 异步同步 goroutine 并发操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论