# 语法

# 行分隔符

先看一下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的参数为变量的指针,务必加上&

更新于