Go Study Day01 - 基本数据类型
# Go 基本命令
# go build
使用go build
在项目目录下执行
go build
在其他路径下执行
go build
, 需要在后面加上项目的路径(项目路径从GOPATH/src后开始写起,编译之后的可执行文件就保存在当前目录下)go build -o hello.exe
# go run
像执行脚本文件一样执行Go代码:go run main.go
# go install
go install
分为两步:
先编译得到一个可执行文件
将可执行文件拷贝到
GOPATH/bin
# 交叉编译
Go支持跨平台编译
例如:在windows平台编译一个能在linux平台执行的可执行文件
SET CGO_ENABLED=0 // 禁用CGO
SET GOOS=linux // 目标平台是linux
SET GOARCH=amd64 // 目标处理器架构是amd64
2
3
执行go build
Mac平台交叉编译:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
2
# Go语言文件的基本结构
import "fmt"
// 函数外只能防止标识符(变量\常量\函数\类型)的声明
// fmt.Println("Hello") // 非法
// 程序的入口函数
func main() {
fmt.Println("Hello world!")
}
2
3
4
5
6
7
8
9
10
# 变量和常量
# 变量
Go语言中的变量必须先声明再使用,格式:
var 变量名 变量类型
声明变量
var s1 string
:声明一个保存字符串类型数据的s1变量
声明并赋值
var 变量名 类型 = 表达式
var age int = 18
//函数内部专属:
name3:="zhangsan"
2
3
4
类型推导
有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
var name = "Q1mi"
var age = 18
2
短变量声明
在函数内部,可以使用更简略的 :=
方式声明并初始化变量。
package main
import (
"fmt"
)
// 全局变量m
var m = 100
func main() {
n := 10
m := 200 // 此处声明局部变量m
fmt.Println(m, n)
}
2
3
4
5
6
7
8
9
10
11
12
13
匿名变量
匿名变量用一个下划线_
表示,例如:
func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
2
3
4
5
6
7
8
9
# 常量
相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把var
换成了const
,常量在定义的时候必须赋值。
const pi = 3.1415
const e = 2.7182
2
# iota
iota
是go语言的常量计数器,只能在常量的表达式中使用。
iota
在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota
计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。
举个例子:
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)
2
3
4
5
6
两个要点:
iota
在const关键字出现时将被重置为0- const中每新增一行常量声明,iota累加1
# 注意事项
变量名推荐使用驼峰式
变量必须先声明再使用
变量声明且赋值后必须使用
# 基本数据类型
整型
无符号整型:
uint8
、uint16
、uint32
、uint64
带符号整型:
int8
、int16
、int32
、int64
uint
和int
:具体是32位还是64位看操作系统
uintptr
:表示指针浮点型
float64
和float32
Go语言中浮点数默认是
float64
复数
complex128
和complex64
布尔值
true
和false
不能和其他的类型做转换
字符串
"字符串"
字符串、字符、字节 都是什么?
字符串:双引号包裹的是字符串
字符:单引号包裹的是字符,单个字母、单个符号、单个文字
字节:1byte=8bit
go语言中字符串都是UTF8编码,UTF8编码中一个常用汉字一般占用3个字节。
// 字符串
s := "Hello 沙河"
// 单独的字母、汉字、符号表示一个字符
c1 := 'h'
c2 := '1'
c3 := '沙'
// 字节: 1字节=8Bit(8个二进制位)
// 1个字符‘A’=1个字节
// 1个utf8编码的汉字'沙'= 一般占3个字节
2
3
4
5
6
7
8
9
# byte和rune
Go 语言的字符有以下两种:
uint8
类型,或者叫 byte 型,代表一个ASCII码
字符。rune
类型,代表一个UTF-8字符
。
# 运算符
# 算术运算符
+-*/
# 逻辑运算符
&&
||
!
# 位运算符
>>
<<
|
^
&
# 赋值运算符
=
+=
。。。
++
和--
是独立的语句,不属于赋值运算符
# 比较运算符
<
<=
!=
。。。