1、布尔类型bool
布尔类型也叫bool型,只允许取值true和false
bool类型只占一个字节。
boolean类型类似于逻辑运算,一般用于程序流程的控制
package main
import (
"fmt"
"unsafe"
)
func main() {
var b = false
fmt.Println("b=", b)
//bool类型只占一个字节。
fmt.Println("b所占空间为:", unsafe.Sizeof(b))
}
2、字符串类型
字符串就是一串固定长度的字符串连起来的序列。Go中的字符串是有单个字节连接起来的,Go语言的字符串的字节使用UTF-8编码表示的Unicode文本
2.1使用细节
Golang统一使用utf-8编码,不会出现中文乱码
字符串一旦赋值,字符串就不能修改了,在Go中字符串时不可变的
//字符串一旦赋值,字符串就不能修改了,在Go中字符串时不可变的
var str string = "hello"
str[0] = 'a' //不能去修改str的内容,即go中的字符串是不可变的。
字符串的两种表现形式
双引号,会识别转义字符
反引号
//字符串的两种表现形式:
// a. 双引号,会识别转义字符
// b. 反引号(`)
var daima string = `
package main
import "fmt"
func main() {
var address string = "德州学院"
fmt.Println(address)
}
`
fmt.Println(daima)
字符串拼接方式
当字符串太长时,可以分行写,但是需要将 + 放在上一行
3、基本数据类型的默认值
在go中,所有的数据类型都有一个默认值,又叫零值
基本数据类型默认值如下
整形: 0
浮点型: 0
布尔型: false
字符串: ""
4、基本数据类型的转换
介绍
go在不同类型的变量之间赋值时需要显式转换
基本语法
表达式T(v)将值v转换为类型T
T:数据类型
v:需要转换的变量
package main
import "fmt"
func main() {
//字符串拼接方式
var i int32 = 100
var nu float32 = float32(i)
var i1 int8 = int8(i)
var i2 int64 = int64(i) //低精度-->高精度
fmt.Println(nu)
fmt.Printf("i1=%v,i2=%v", i1, i2)
}
在转换中,结果如果将高精度转换为低精度时,编译不会出错,只是转换的结果是按溢出处理,和我们想的结果不同。
5、基本数据类和string类型的转换
在程序开发中,经常把数据类型转换为string或将string转换为基本数据类型
基本数据类型转string
方式一:fmt.Sprintf("%参数",表达式)
Sprintf根据format参数生成格式化字符串并返回该字符串
var num1 int = 10
var num2 float32 = 123.034
var num3 byte = 'q'
var num4 bool = true
var str string
str = fmt.Sprintf("%d", num1)
fmt.Printf("str type %T str = %v\n", str, str)
str = fmt.Sprintf("%f", num2)
fmt.Printf("str type %T str = %v\n", str, str)
str = fmt.Sprintf("%c", num3)
fmt.Printf("str type %T str = %v\n", str, str)
str = fmt.Sprintf("%t", num4)
fmt.Printf("str type %T str = %v\n", str, str)
方式二:strconv函数
var num5 int = 10
var num6 float64 = 123.034
var num7 bool = true
var str string
str = strconv.FormatInt(int64(num5), 10)
fmt.Printf("str type %T str = %v\n", str, str)
str = strconv.FormatFloat(num6, 'f', 10, 64)
fmt.Printf("str type %T str = %v\n", str, str)
str = strconv.FormatBool(num7)
fmt.Printf("str type %T str = %v\n", str, str)
// strconvn包里的一个函数
var num8 int = 4567
str = strconv.Itoa(num8)
fmt.Printf("str type %T str = %v\n", str, str)
}
string转基本类型
使用strconv包的函数
package main
import (
"fmt"
"strconv"
)
func main() {
var str string = "true"
var b bool
//说明:
//1.strconv.ParseBool(str)会返回两个值(value bool,err err)
//2.因为只想获取到value bool;不想获取err 所以使用_忽略
b, _ = strconv.ParseBool(str)
fmt.Printf("b type %T b = %v\n", b, b)
var str2 string = "123456"
var n1 int64
n1, _ = strconv.ParseInt(str2, 10, 64)
fmt.Printf("n1 type %T n1 = %v\n", n1, n1)
var str3 string = "123.456"
var f1 float64
f1, _ = strconv.ParseFloat(str3, 64)
fmt.Printf("f1 type %T f1 = %v\n", f1, f1)
}
如果返回的是int64或者float64,若要转换为int32,float32要自行转换
注意事项
要确保string类型转换为有效数据,若转换失败默认零值
6、指针
基本介绍
基本数据类型,变量村的就是值,也叫值类型
获取变量的地址,使用地址符 &
指针类型,指针变量存的是一个地址,这个地址指向空间才是值
获取指针类型的值,使用 *变量
package main
import "fmt"
func main() {
var i int = 10
fmt.Println(&i)
//1.ptr 是一个指针变量
//2.ptr 的类型是*int
//3.ptr 本身的值是&i
var ptr *int = &i
fmt.Printf("ptr = %v\n", ptr)
fmt.Printf("ptr 的地址=%v\n", &ptr)
fmt.Printf("ptr 指向的值=%v\n", *ptr)
}
6、值类型和引用类型
值类型:基本数据类型,int
引用类型:指针,slice切片、map、管道
特点
值类型:变量直接存储值,内存通常在栈中分配
引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据,内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾有GC来回收
7、标识符的命名规范
golang对各种变量、方法、函数等命名时使用的字符序列成为标识符
凡是自己起名字的地方都是标识符
命名规范
由26个英文字母带小写,0-9,_组成
数字不可以当作开头
Golang中严格区分大小写
标识符不能内包含空格
下划线"_"本身在golang中是一个特殊的标识符,成为空标识符,可以代表其他的表示符,但是对应的值会被忽略。所以仅能被作为占位符使用,不能作为标识符使用。
不能被系统的保留关键字做为标识符。
注意事项
包名:保持package的名字与目录的名字保持一致,简短,有意义,不要与标准库冲突
变量名,函数名、常量名尽量采用驼峰法
如果变量名,函数名,常量名首字母大写,则可以被其他的包访问,如果首字母小写,则只能在本包中使用,在golang中没有public等关键字。
参考文献:
https://www.bilibili.com/video/BV1ME411Y71o/ 尚硅谷Golang入门到实践