hello go
// go 文件的后缀是.go
// package 标识该文件所在的包
// import 表示引入一个包 包名fmt
/*
func main (){
}
func是一个关键字,表示一个函数
main是函数名,主函数
*/
/*
go build -o xxx xx.go ====> 生成指定的可执行文件xxx
go build xxx.go
./xxx (mac) ====> 运行可执行文件
*/
/*
1,go应用程序的执行入口是main方法
2,严格区分大小学
3,每句句末不需要分号
4,一行一行编译的
5,声明的变量和引入的包必须是使用的,否则编译错误
6,{ 不能作为一行的开头
*/
/*
转义字符
1,\t : 一个制表位
2,\n : 换行符
3, \\ : 一个\
4, \r : 一个回车
*/
package main
import "fmt"
func main(){
fmt.Println("hello go")
}
变量的声明
/*
变量使用的注意事项
1,变量表示内存中的存储区域
2,声明后不赋值,默认为默认值
例如:int 默认值 0
string 默认值 “”
bool 默认值 false
3,根据值自行判断变量类型
*/
package main
import "fmt"
// 声明全局变量
var q1 int = 2
var q2 string = "2"
// 以上可以简写成如下
var (
q3 = 3
q4 = "3"
)
func main(){
// 定义变量
var num int
// 给变量赋值
num = 1
fmt.Println(num)
// 类型推导
var num2 = 10.11
fmt.Println(num2)
// 省略var
// 下面的方式等价于 var name string name = "tom"
name := "tom"
fmt.Println(name)
// 支持一次性声明多个变量
var n1, n2, n3 int
fmt.Println(n1, n2, n3)
var name2, number, money = "s", 1, 1.2;
fmt.Println(name2, number, money)
fmt.Println(q1, q2, q3, q4);
}
如何查看声明变量的类型以及字节数?
package main
import (
"fmt"
"unsafe"
)
func main() {
var num int8 = 125
fmt.Printf("该变量的类型为: %T", num)
fmt.Printf("该变量占用的字节数为 %d", unsafe.Sizeof(num))
}
数据类型
go中变量的数据类型
基本数据类型:
数值 整数:int,int8,int16,int32
uint,uint8,uint32,uint64
浮点类型: float32 float64
字符 无专门的字符,一般用byte表示单个字母
布尔 bool
字符串 string
复杂数据类型
1,指针
2,数组
3,结构体
4,管道
5,函数
6,切片
7,接口
8,map
uint 表示正数,无符号,例如uint8的范围为0~255
var n1 = 100 // n1是什么类型
fmt.Printf("%T", n1) =====>可以查看变量类型
String与基本类型的互相转换
package main
import (
"fmt"
"strconv"
)
func main() {
var i int32 = 100
// 将int32转换为float
var n1 float32 = float32(i)
fmt.Println(n1)
// go 不支持隐式转换类型
var num1 int32 = 100
var num2 int64 = int64(num1)
fmt.Println(num2)
/*
基本数据类型转String
*/
// fmt.Sprintf("%参数,表达式")
var num3 int = 183
var num4 float64 = 17.134
b := true
myChar := 'C'
str := ""
// int转string
str = fmt.Sprintf("%d \n", num3)
fmt.Printf("str type is %T,str = %v", str, str)
// float转string
str = fmt.Sprintf("%f \n", num4)
fmt.Printf("str type is %T,str = %v", str, str)
// bool转string
str = fmt.Sprintf("%t \n", b)
fmt.Printf("str type is %T,str = %v", str, str)
// 字符转string
str = fmt.Sprintf("%c \n", myChar)
fmt.Printf("str type is %T,str = %v", str, str)
// 使用strconv包的函数转换
fmt.Println("第二种转换方式")
str = strconv.FormatInt(int64(num3), 10)
fmt.Printf("str type is %T,str = %v \n", str, str)
str = strconv.FormatFloat(num4, 'f', 8, 64)
fmt.Printf("str type is %T,str = %v \n", str, str)
str = strconv.FormatBool(b)
fmt.Printf("str type is %T,str = %v \n", str, str)
/*
String转基本类型
*/
fmt.Println("string转基本类型")
str2Int := "123"
str2Float := "3.14"
str2Bool := "true"
// str2Char := 'a'
// int转string PaseInt参数:str, 进制, 位
fmt.Println("string转int")
i2, err1 := strconv.ParseInt(str2Int, 10, 64)
if err1 == nil {
fmt.Printf("i2 type is %T, value is %v \n", i2, i2)
} else {
fmt.Println("format error")
}
// float转string ParseFloat参数:str, 位
fmt.Println("string转float")
f, err2 := strconv.ParseFloat(str2Float, 64)
if err2 == nil {
fmt.Printf("i2 type is %T, value is %v \n", f, f)
} else {
fmt.Println("format error")
}
// bool转string ParseBool参数:str
fmt.Println("string转bool")
b, err3 := strconv.ParseBool(str2Bool)
if err3 == nil {
fmt.Printf("i2 type is %T, value is %v \n", b, b)
} else {
fmt.Println("format error")
}
}
持续更新。。。