中文网站建设开发,北京网站建设公司升上去,皮皮果网站建设,网站界面设计简单文章目录 0、进制1、变量的声明2、数据类型3、整型4、浮点型5、字符类型6、布尔类型7、字符串类型8、基本数据类型的默认值9、类型转换10、基本类型转String11、String转其他类型 0、进制
N进制#xff0c;逢N进一 1、变量的声明
//声明 赋值
var age int 18//声明、赋值、… 文章目录 0、进制1、变量的声明2、数据类型3、整型4、浮点型5、字符类型6、布尔类型7、字符串类型8、基本数据类型的默认值9、类型转换10、基本类型转String11、String转其他类型 0、进制
N进制逢N进一 1、变量的声明
//声明 赋值
var age int 18//声明、赋值、使用
func main(){var age intage 18fmt.Println(age , age)
}通过变量名在内存中找到它通过房间号找到在一栋楼里找到某个房间变量类型即区分空间大小类比单人间、双人间 变量定义的四种形式
package main
import fmt
func main(){//定义在{}中的变量叫局部变量//第⼀种变量的使⽤⽅式指定变量的类型并且赋值var num int 18fmt.Println(num)//第⼆种指定变量的类型但是不赋值使⽤默认值var num2 intfmt.Println(num2)//第三种如果没有写变量的类型那么根据后⾯的值进⾏判定变量的类型 ⾃动类型推断var num3 tomfmt.Println(num3)//第四种省略var注意 : 不能写为 sex : 男fmt.Println(sex)
}也可一次声明多个变量不论局部还是全局变量
package main
import fmt//全局变量定义在函数外的变量
var n7 100
var n8 9.7//设计者认为上⾯的全局变量的写法太麻烦了可以⼀次性声明
var (n9 500n10 netty
)func main(){//声明多个变量var n1,n2,n3 intfmt.Println(n1) //0fmt.Println(n2) //0fmt.Println(n3) //0var n4,name,n5 10,jack,7.8fmt.Println(n4)fmt.Println(name)fmt.Println(n5)n6,height : 6.9,100.6fmt.Println(n6)fmt.Println(height)fmt.Println(n7)fmt.Println(n8)fmt.Println(n9)fmt.Println(n10)
}2、数据类型 3、整型
有符号整数型 //首位为符号位127即
0111 1111 无符号型 //255即
1111 1111其他类型 不加类型声明整形go默认是int类型 导入unsafe包查看变量所占的字节数 4、浮点型
不同于Java的float和doublego中是float32和float64 package main
import fmt
func main(){//定义浮点类型的数据var num1 float32 3.14fmt.Println(num1)//可以表示正浮点数也可以表示负的浮点数var num2 float32 -3.14fmt.Println(num2)//浮点数可以用十进制表示形式也可以用科学计数法表示形式 E 大写小写都可以的var num3 float32 314E-2 fmt.Println(num3)var num4 float32 314E2fmt.Println(num4)var num5 float32 314e2fmt.Println(num5)var num6 float64 314e2fmt.Println(num6)//浮点数可能会有精度的损失所以通常情况下建议你使用float64 var num7 float32 256.000000916fmt.Println(num7)var num8 float64 256.000000916fmt.Println(num8)//golang中默认的浮点类型为float64 var num9 3.17fmt.Printf(num9对应的默认的类型为%T,num9)
}运行发现精度损失 因此通常建议用float64且go中浮点类型默认也是float64
5、字符类型
和Java有char不同Go中没有专⻔的字符类型如果要存储单个字符(字⺟)⼀般使⽤byte类型来保存且Go中字符使用utf-8编码
package main
import fmt
func main(){//定义字符类型的数据var c1 byte afmt.Println(c1)//97var c2 byte 6fmt.Println(c2)//54var c3 byte (fmt.Println(c3 20)//40//字符类型本质上就是一个整数也可以直接参与运算输出字符的时候会将对应的码值做一个输出//字母数字标点等字符底层是按照ASCII进行存储。var c4 int 中fmt.Println(c4)//汉字字符底层对应的是Unicode码值//对应的码值为20013byte类型溢出能存储的范围可以用int//总结Golang的字符对应的使用的是UTF-8编码Unicode是对应的字符集UTF-8是Unicode的其中的一种编码方案var c5 byte A//想显示对应的字符必须采用格式化输出fmt.Printf(c5对应的具体的字符为%c,c5)
}关于转义字符
import fmt
func main(){//练习转义字符//\n 换行fmt.Println(aaa\nbbb)//\b 退格fmt.Println(aaa\bbbb)//\r 光标回到本行的开头后续输入就会替换原有的字符fmt.Println(aaaaa\rbbb)//\t 制表符fmt.Println(aaaaaaaaaaaaa)fmt.Println(aaaaa\tbbbbb)fmt.Println(aaaaaaaa\tbbbbb)//\fmt.Println(\Golang\)
} 6、布尔类型
package main
import fmt
func main(){//测试布尔类型的数值var flag01 bool true//truefmt.Println(flag01)var flag02 bool false//falsefmt.Println(flag02)var flag03 bool 5 9//truefmt.Println(flag03)
}
7、字符串类型
字符串是不可变的指的是字符串⼀旦定义好其中的字符的值不能变如str[0] b‘
如果字符串中没有特殊字符字符串的表示形式⽤双引号如果字符串中有特殊字符字符串的表示形式⽤反引号 号进行字符串拼接
package main
import fmt
func main(){//1.定义一个字符串var s1 string 你好Golangfmt.Println(s1)//2.字符串是不可变的指的是字符串一旦定义好其中的 字符 的值不能改变var s2 string abcs2 def//s2[0] tfmt.Println(s2)//3.字符串的表示形式//1如果字符串中没有特殊字符字符串的表示形式用双引号//var s3 string asdfasdfasdf//2如果字符串中有特殊字符字符串的表示形式用反引号 var s4 string package mainimport fmtfunc main(){//测试布尔类型的数值var flag01 bool truefmt.Println(flag01)var flag02 bool falsefmt.Println(flag02)var flag03 bool 5 9fmt.Println(flag03)}fmt.Println(s4)//4.字符串的拼接效果var s5 string abc defs5 hijkfmt.Println(s5)//当一个字符串过长的时候注意保留在上一行的最后var s6 string abc def abc def abc def abc def abc def abc def abc def abc defabc def abc def abc def abc def abc def abc def abc def abc def abc def abc def abc deffmt.Println(s6)
} 最后注意换行拼接时保留在上⼀⾏的最后因为和Java不一样没封号你换行编译器会认为这个语句结束了 8、基本数据类型的默认值 9、类型转换
go不同类型变量之间赋值需要显式转换强制转换
语法
T(v)
//将值v转换为类型Tpackage main
import fmt
func main(){ var n1 int 100//进行类型转换//var n2 float32 n1 在这里自动转换不好使比如显式转换var n2 float32 float32(n1)fmt.Println(n2)//注意n1的类型其实还是int类型只是将n1的值100转为了float32而已n1还是int的类型fmt.Printf(%T,n1) //intfmt.Println()//将int64转为int8的时候编译不会出错的但是会数据的溢出var n3 int64 888888var n4 int8 int8(n3)fmt.Println(n4)//转型后结果是56就像把一个大面包强塞到一个小盒子面包肯定要掉渣var n5 int32 12var n6 int64 int64(n5) 30 //一定要匹配左右两边的数据类型fmt.Println(n6)var n7 int64 12var n8 int8 int8(n7) 127 //编译通过但是结果可能会溢出//var n9 int8 int8(n7) 128 //编译不会通过fmt.Println(n8)//fmt.Println(n9)
}
注意最后的两个int8类型-128到127所以这个编译能通过但是结果可能会溢出
var n7 int64 12
var n8 int8 int8(n7) 127 而这个则编译都不通过
var n9 int8 int8(n7) 128 10、基本类型转String
方式一fmt.Sprintf(“%参数”,表达式)
package main
import fmt
func main(){var n1 int 19var n2 float32 4.78var n3 bool falsevar n4 byte a//int转string %dvar s1 string fmt.Sprintf(%d,n1)fmt.Printf(s1对应的类型是%T s1 %q \n,s1, s1)var s2 string fmt.Sprintf(%f,n2)fmt.Printf(s2对应的类型是%T s2 %q \n,s2, s2)var s3 string fmt.Sprintf(%t,n3)fmt.Printf(s3对应的类型是%T s3 %q \n,s3, s3)//byte转string %cvar s4 string fmt.Sprintf(%c,n4)fmt.Printf(s4对应的类型是%T s4 %q \n,s4, s4) //%q即将结果用引号引起来
}方式二使⽤strconv包的函数
package main
import(fmtstrconv
)func main(){var n1 int 18//参数第一个参数必须转为int64类型 第二个参数指定字面值的进制形式为十进制var s1 string strconv.FormatInt(int64(n1),10) fmt.Printf(s1对应的类型是%T s1 %q \n,s1, s1) //18var n2 float64 4.29//第二个参数f-ddd.dddd 第三个参数9 保留小数点后面9位 第四个参数表示这个小数是float64类型var s2 string strconv.FormatFloat(n2,f,9,64) fmt.Printf(s2对应的类型是%T s2 %q \n,s2, s2)var n3 bool truevar s3 string strconv.FormatBool(n3)fmt.Printf(s3对应的类型是%T s3 %q \n,s3, s3)
}
11、String转其他类型
使用strconv包的函数
package main
import(fmtstrconv
)
func main(){//string--boolvar s1 string truevar b bool//ParseBool这个函数的返回值有两个(value bool, err error)返回值结果不能只用一个变量去接收//value就是我们得到的布尔类型的数据err表示可能出现的错误//我们只关注得到的布尔类型的数据err可以用_直接忽略b , _ strconv.ParseBool(s1)fmt.Printf(b的类型是%T,b%v \n,b,b)//string---》int64var s2 string 19var num1 int64num1,_ strconv.ParseInt(s2,10,64)fmt.Printf(num1的类型是%T,num1%v \n,num1,num1)//string--float32/float64var s3 string 3.14var f1 float64f1,_ strconv.ParseFloat(s3,64) //转float64fmt.Printf(f1的类型是%T,f1%v \n,f1,f1)//注意下面转完后输出Boolean的默认值falsevar s4 string golangvar b1 boolb1 , _ strconv.ParseBool(s4)fmt.Printf(b1的类型是%T,b1%v \n,b1,b1) //无效转最后输出int的默认值0var s5 string golangvar num2 int64num2,_ strconv.ParseInt(s5,10,64)fmt.Printf(num2的类型是%T,num2%v \n,num2,num2)
}
string向基本数据类型转换的时候一定要确保string类型能够转成有效的数据类型否则最后得到的结果就是按照对应类型的默认值输出