Go 基础教程--3-类型与变量
作业:
既然导入多个包时可以进行简写,那么声明多个常量、全局变量或一般类型(非接口、非结构)是否也可以用同样的方法呢?
答案:
是可以的!验证如下
package main
import std "fmt"
const (
PI = 3.14
const1 = "1"
const2 = 2
const3 = 3
)
var (
name = "gopher"
name1 = "1"
name2 = 2
name3 = 3
)
type (
newType int
type1 float32
type2 string
type3 byte
)
func main() {
std.Println("hello1")
}
Go基本类型
一、布尔型:bool
- 长度:1字节
- 取值范围:true、false
- 注意事项:不可用数字代表true或false
二、整型:int/uint
- 根据运行平台可能是32位或64位
三、8位整型:int8/unit8
- 长度:1字节
- 取值范围: -128 ~ 127 / 0 ~ 255
四、字节型:byte(unit8别名)
- 16位整型:int16/uint16
- 长度:2字节
- 32位整型:int32(rune)/uint32
- 长度:4字节
- 取值范围:-2^32/2
2^32/2-1/02^32-1
- 64位整型:int64/uint64
- 长度:8字节
- 取值范围:-2^64/2
2^64/2-1/02^64-1
- 浮点型:float32/float64
- 长度:4/8字节
- 小数位:精确到7/15小数位
- 取值范围:-32768
32767/065535
- 复数:complex64/complex128
- 长度:8/16字节
- 足够保存指针的 32 位或 64 位整数型:uintptr
- 其它值类型:
- array、struct、string
- 引用类型:
- slice、map、chan
- 接口类型:inteface
- 函数类型:func
类型零值
零值并不等于空值,而是当变量被声明为某种类型后的默认值,
通常情况下值类型的默认值为0,bool为false,string为空字符串
package main
import "fmt"
func main() {
var a bool
fmt.Println(a)
}
//int 0
//bool false
//string ''
//byte 0
判断长度是否够用
package main
import (
"fmt"
"math"
)
func main() {
//var a byte
fmt.Println(math.MaxInt8) //127
fmt.Println(math.MaxInt32) //2147483647
}
类型别名
中文也可以做别名,不建议
package main
import (
"fmt"
)
//别名
type (
byte uint8
rune int32
文本 string
)
func main() {
var b 文本
b = "中文类型名"
fmt.Println(b)
}
单个变量的声明和赋值
- 变量的声明格式:
var a int
- 变量的赋值格式:
a = 123
或者var a int = 123
- 声明的同时赋值:
a [int] := 123
func main() {
//var b 文本
//b = "中文类型名"
var a float32
a = 1.1
fmt.Println(a)
fmt.Println(math.MaxUint8)
}
//小数的长度问题
全局变量不支持 :=
声明
多个变量的声明与赋值
- 全局变量的声明可使用 var() 的方式进行简写
- 全局变量的声明不可以省略 var,但可使用并行方式
- 所有变量都可以使用类型推断
- 局部变量不可以使用 var() 的方式简写,只能使用并行方式
func main() {
var a, b, c, d int = 1, 2, 3, 4
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
空白值忽略
func main() {
var a, _, c, d int = 1, 2, 3, 4
fmt.Println(a)
//fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
//用于多个返回值
变量的类型转换
Go中不存在隐式转换,所有类型转换必须显式声明
转换只能发生在两种相互兼容的类型之间
类型转换的格式:
[:]= ()
func main() {
var a float32 = 100.1
fmt.Println(a)
b := bool(a)
fmt.Println(b)
}
//cannot convert a (type float32) to type bool
作业
func main() {
var a int = 65
b := string(a)
fmt.Println(b)
}
//A
答案分析:
string()表示将数据转换成文本格式,因为计算机存储的任何东西本质上都是数字,因此此函数自然地认为我们需要的是用数字65表示的文本A
强制类型转换
package main
import (
"fmt"
"strconv"
)
func main(){
var a int = 65
b := strconv.Itoa(a)
fmt.Println(b)
}
//65
package main
import (
"fmt"
"strconv"
)
func main(){
var a int = 65
b := strconv.Itoa(a)
a,_ = strconv.Atoi(b)
fmt.Println(a)
fmt.Println(b)
}
//65
//65
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: