1. GO 环境安装
2. GO基础知识学习
语言数据类型
-
布尔型:
bool
- 布尔型的值只可以是常量 true 或者 false
- 在格式化输出时,可以使用 %t 来表示你要输出的值为布尔型。
- 对于布尔值, 好的命名能够很好地提升代码的可读性,例如以 is 开头的isFinished。
var b bool = true
-
数字类型:
- 数字类型的默认值是 0
- int 型是计算最快的一种类型
- Go是强类型语言,不会进行隐式转换。所以Go 中不允许不同类型之间的混合使用,但允许常量之间的混合使用。
- 尽可能地使用 float64,因为 math 包中所有有关数学运算的函数都会要求接收这个类型。
- 有符号整数
- int8(-128 -> 127)
- int16(-32768 -> 32767)
- int32(-2,147,483,648 -> 2,147,483,647)
- int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807)
- int( 32 位操作系统上64 位,64 位操作系统64 位)
- 无符号整数
- uint8(0 -> 255)
- uint16(0 -> 65,535)
- uint32(0 -> 4,294,967,295)
- uint64(0 -> 18,446,744,073,709,551,615)
- uint ( 32 位操作系统上64 位,64 位操作系统64 位)
- 浮点数
- float32(+- 1e-45 -> +- 3.4 * 1e38)
- float64(+- 5 1e-324 -> 107 1e308)
- 复数
- complex64 (32 位实数和虚数)
- complex128 (64 位实数和虚数)
var a uint8 = 255 // 255 var b int = 255 // 255 var c int // 0 var d float64 //0 复制代码
-
字符串类型:
string
-
byte类型
-
rune类型
变量
- 变量通过变量名访问
- 变量名由字母、数字、下划线组成,其中数字不可以在守卫
- 声明变量使用
var
, 可以一次性声明多个变量 - 声明变量的格式:
var identifier type
, 可以只声明,不初始化. - 声明未初始化的时候不可以漏写类型, 否则会报错
- 单引号是字符, 会输出对应的 unicode编码, 双引号是字符串
有效声明变量名如下
变量未初始化的初始值:
// 基本数据类型
package main
import "fmt"
func main() {
var i int
var f float64
var b bool
var s string
fmt.Printf("%v %v %v %q\n", i, f, b, s) // 0 0 false ""
}
复制代码
// 其他数据
package main
import "fmt"
func main() {
var a *int // 报错: cannot use a (type *int) as type string in argument to fmt.Printf. Go build failed.
var b []int // []
var c map[string] int // map[]
var d chan int // <nil>
var e func(string) int // <nil>
var f error // <nil> error 是接口
fmt.Printf(a, b, c, d, e, f)
}
复制代码
常量
常量是不会被修改值的标识符, 常量的数据类型只可以是布尔型、数字型和字符串型。
常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过
iota,特殊常量,可以认为是一个可以被编译器修改的常量, 它默认开始值是0,const中每增加一行加1,同行值相同, iota中断必须显性恢复
// 定义如下:
const b string = "abc"
const b = "abc" // 编译器可以推断类型
const a, b, c = 1, false, "str" // 多值多类型定义
// 常量枚举
const (
Unknown = 0
Female = 1
Male = 2
)
// 函数计算式
a = "abc"
b = len(a)
// import "unsafe"
c = unsafe.Sizeof(a)
// iota
const (
a = iota
b
c
) // a = 0, b = 1, c= 2
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i) // 0 1 2 ha ha 100 100 7 8
// iota实例
const (
i=1<<iota
j=3<<iota
k
l
)
func main() {
fmt.Println("i=",i)
fmt.Println("j=",j)
fmt.Println("k=",k)
fmt.Println("l=",l)
}
//i= 1, j= 6 ,k= 12, l= 24
/**
i左移0位, j左移1位, k左移2位, l左移4位
<<n==*(2^n)
**/
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END