# 语法
# 行分隔符
先看一下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.Scan
和fmt.Scanln
package main
import "fmt"
func main() {
var a string
fmt.Scan(&a)
fmt.Println(a)
}
Scan的参数为变量的指针,务必加上&