golang开发笔记
一,变量
1.变量介绍
变量 是相当于 内存中 一个 数据储存空间 的表示。
有自己的变量名和数据类型
//指定变量类型,声明后不赋值,使用默认值
package main
import "fmt"
func(){
var i int
fmt,println("i=",i)
//根据值自行判断变量类型
var num = 10.11
fmt.Println("num=",num)
//省略var,i=左侧的变量不因该是已经声明过的
name := "tom"
fmt.Println("name",name)
}
可以进行多个变量声明,同样可以进行类型推导
package main
import "fmt"
func main() {
var n1 , name , n3 = 100, "tom", 888
fmt.Println(n1,name,n3)
}
package main
import "fmt"
func getVal(num1 int, num2 int) (int, int) {
sum := num1 + num2
sub := num1 + num2
return sum, sub
}
func main() {
sum, sub := getVal(30, 30)
fmt.Println("sum=", sum, "sub=", sub)
sum2, _ := getVal(10, 30) //只取出第一个值
fmt.Println("sum=", sum2)
fmt.Print("Hello world")
}
2.整数类型
查看一个变量的数据类型,用fmt.Printf()用作格式化输出
unsafe.Sizeof()是unsafe包的一个函数,可以返回n1变量占用的字节数
package main
import (
"fmt"
"unsafe"
)
func main() {
var n2 int64 = 10
fmt.Println("n2 的 类型 %T n2占用的字节数是%d",n2,unsafe.Sizeof(n2))
}
3.小数类型
开发中推荐使用float64
package main
import (
"fmt"
)
func main() {
var price float32 = 89.12
fmt.Println("price=", price)
var num1 float32 = -0.00089
var num2 float64 = -780965.09
fmt.Println("num1", num1, "num2", num2)
//尾数部分可能丢失,造成精度损失。
var num3 float32 = -123.0000901 //-123.0009
var num4 float64 = -123.0000901
fmt.Println("num=", num3, "num4", num4)
//Golang 的浮点型默认声明为float64 类型
var num5 = 1.1
fmt.Println("num5的数据 %T", num5)
//科学计数法形式
num8 := .123e2
num9 := .123e-2
fmt.Println(num8, num9)
}
4.字符类型
GO没有专门的字符类型,一般使用byte储存字符
1.go使用 utf-8 编码
2.注意使用转义字符
3.直接输出是 utf-8 的码值,格式化输出 %c ,输出对应的 unicode 字符
4.可进行运算的,相当整数
func main() {
// 输出码值
var c1 byte = 'a'
var c2 byte = '0'
fmt.Println("c1=", c1)
fmt.Println("c2=", c2)
// 格式化输出
fmt.Printf("c1=%c c2=%c", c1, c2)
// 汉字存在int类型
}
5.bool类型
占用储存空间一个字节
6.字符串类型
go 中字符串是不可变的,定义赋值后不可更改
拼接时 + 保留在上一行
package main
import (
"fmt"
)
func main() {
var str string
var str2 string
str = "hello" +
" world !"
str2 = str + "hello"
fmt.Println(str, str2)
//字符串可拼接赋值
}
7.基本数据类型转换
go在不同类型的变量之间需要进行显式转换,《golang中数据类型不能自动转换
package main
import (
"fmt"
)
func main() {
var i int32 = 100
var n1 float32 = float32(i)
var n2 int8 = int8(i)
var n3 int64 = int64(n2) //低精度 ->高精度
fmt.Println(n1, n2, n3)
// 溢出处理
}
2023.3.26 记