我是基于 deepseek v3 的 AI 助手

这篇文章主要介绍了Go语言的基础语法和变量声明方式,并与C++进行了简单对比。文章首先通过“Hello World”程序展示了Go与C++在语法上的差异,如项目入口的定义、行尾分隔符的使用以及导入包的方式。接着,文章详细讲解了Go语言中变量的声明和赋值方式,包括使用`var`关键字、省略类型声明以及使用`:=`进行简短声明。此外,文章还列举了Go语言中的基本数据类型,如整数、浮点数、复数、字符串和布尔值,并强调了局部变量声明后必须使用的规则。最后,文章简要介绍了Go语言中的输入方法`fmt.Scan`和`fmt.Scanln`,并提醒读者在输入时需要使用变量的指针。 这篇文章为初学者提供了Go语言的基础知识,适合那些希望了解Go语言语法和变量声明的读者。如果你对Go语言感兴趣,或者正在从其他语言(如C++)转向Go,这篇文章将为你提供清晰的入门指导。继续阅读,你将深入了解Go语言的更多细节和特性。

# 语法

# 行分隔符

先看一下 c++ 的 hello world:

#include <iostream>
using namespace std;
int main(){
    cout << "hello world" << endl;
}

然后再看一下 go 的:

package main
import "fmt"
func main() {
	fmt.Println("hello world")
}

可以看出以下几点差异:

  • C++ 使用 main 函数定位项目入口,go 使用 main 包定位项目入口
  • C++ 使用分号作为行尾分隔符,go 无需分隔符
  • C++ 使用 include ,go 使用 import

go 也可以使用分号,适用于一行多语句

# 变量

# 创建变量

package main
import "fmt"
func main() {
	var a int
	a = 10
	fmt.Println(a)
}

go 中的变量创建格式为: var name type ,type 会在下文提到
也可以省略 type, 代码如下:

package main
import "fmt"
func main() {
	var a = 10
	fmt.Println(a)
}

go 编译器就会自动推断类型为 int , 无需额外指定 type

后两种方法都需要初始赋值

再把 var 也省略掉:

package main
import "fmt"
func main() {
	a := 10
	fmt.Println(a)
}

这里赋值格式为: name := value

这种赋值方法仅适用于未声明变量

# 数据类型

# 整数类型

名称 描述 范围
uint8 无符号 8 位整型 0-255
uint16 无符号 16 位整型 0-65535
uint32 无符号 32 位整型 0-4294967295
uint64 无符号 64 位整型 0-18446744073709551615
int8 有符号 8 位整形 -128-127
int16 有符号 16 位整形 -32768-32767
int32 有符号 32 位整形 -2147483648-2147483647
int64 有符号 64 位整形 -9223372036854775808-9223372036854775807

有或无符号指是否有一位符号位,无符号正数范围更大但不能储存负数

# 小数类型

名称 描述
float32 IEEE-754 32 位浮点型数
float64 IEEE-754 64 位浮点型数
complex64 32 位实数和虚数
complex128 64 位实数和虚数

# 其他数字类型

名称 描述
byte 类似 uint8
rune 类似 int32
int 为 int32/64
uint 为 uint32/64
uintptr 无符号整型,用于存放一个指针

# 其他类型

名称 描述
string 字符串类型
bool 布尔值 (真或假)

# 注意事项

go 语言中的局部变量,只要声明, 必须使用

# 输入

go 输入方法为 fmt.Scanfmt.Scanln

package main
import "fmt"
func main() {
	var a string
	fmt.Scan(&a)
	fmt.Println(a)
}

Scan 的参数为变量的指针,务必加上 &

更新于