strconv.formatFloat()//第一参数:要传入的值,第二参数:格式化类型
第三参数:,保留的小数点(-1不对小数点格式化) 第四参数:类型 传入64或32
var f float32 =20.23
str2 := strconv.formatFloat(float64(f),‘f’,4,64)
str3 := strconv.formatBool(true) //没有任何意义
字符型转换成string
a := ‘a’
str4 := strconv.formatUnit(uint64(a),10)
string类型转换成int型或float型:
str := “1234567”
fmt.Printf("%v,%T",str,str)
var a = 2
num, _ := strconv.ParseInt(str,10)//将字符串转换成int,将字符串转换成几进制
ParseInt:参数1:string 数据 参数2:进制 参数3:位数 32 64 16
返回两个值,不使用的值用匿名参数,转换失败返回0,下划线忽略
str := “1234567”
num,_ := strconv.ParseFloat(str,64)//将字符串转换成浮点型
数值类型没法和bool类型进行转换,相互转换
b,_ := strconv.ParseBool(“true”)//不建议把string转换成bool型,无意义
交换a,b进行交换其值
var a = 34
var b = 10
t:= a // t= 34
a = b // a= 10
b = t // b =34
var a = 34
var b = 10
a = a +b // a= 34 + 10
b = a- b // b= 34+10 -10
a = a -b // a = (34+10)-(34+10-10)
假如还有100天放假,问:xx个星期零XX天
var days = 100
var weeks = days / 7
var day = days % 7
var F float32 = 100
C := (F-32) /1.8
位运算符是对二进制进行计算
& 两位均为1才为1
| 两位有一个为1就为1
^ 相异或 两位不一样则为1
<<左移n位就是相乘2的n次方,"a<<b"是把a的各二进制全部左移b位,高位丢弃,低位补零
右移n位就是除以2的n次方
使用make()函数构造切片:
make([]T,size,cap)
创建一个切片
var sliceA = make([]int,4,8) // [0 0 0 0]长度用%v或%d来获取len(sliceA) 4 cap(sliceA) 8
切片是个引用类型
sliceA[0] = 10
sliceA[1] = 12
sliceA[2] = 40
sliceA[3] = 30
fmt.Println(sliceA) //[10,12,40,30]//修改切片的内容
sliceB := []string{“php”,“java”,“go”}
sliceB[2] = “golang”
var sliceC []int //值:[] 长度:0 容量:0
sliceC[0] =1 //会报错
// append的使用
golang中没法通过下标的方式给切片扩容
golang中给切片中扩容要用到append()动态添加元素,每个切片会指向一个底层数组
sliceC =append(sliceC,12) //[12] 1 1
sliceC =append(sliceC,23,34,56) //第二个参数可以传入多个参数
//append方法还可以合并切片
sliceA := []string{“php”,“java”}
sliceB := []string{“nodejs”,“go”}
sliceA = append(sliceA,sliceB…)
//切片的扩容策略
var sliceA []int
for i := 1;i<10;i++{
sliceA = append(sliceA,i)//
}
使用copy()函数复制切片
copy(slilceB,scliceA)
golang并没有删除切片元素的方法,可以利用append方法来删除指定元素
sliceB := []int{30,31,32,33,34,35,36,37}
//删除35,36
sliceB = append(sliceB[:5],sliceB[7:]…)
fmt.Println(sliceB)
修改字符串中的字符:
s2 :=“你好golang”
runeStr := []rune(s2)
fmt.Println(runeStr) //[20320 22909 103 111 108 97 110 103]
runeStr[0] = ‘大’
fmt.Println(string(runeStr)) //“大好golang”
元素为map类型的切片:
var userinfor = make([]map[string][string],3,3)//map[] 切片的默认值nil,map的默认值是nil
userinfor[0] == nil // true
if userinfor[0] == nil {
userinfor[0] = make(map[string]string)
userinfor[0]["username"]="zhangsan"
userinfor[0]["age"]="20"
userinfor[0]["hight"]="180cm"
}
var str = []string{"123",'3434'}
值为切片类型的map
若想在map对象中存放一系列的属性时,我们就可以把map类型的值定义为切片
var userinfo = make(map[string]string)
var userinfo = make(map[string][]string) //值为[]string 切片
userinfo["hobby"]= []string{
"chifan","shuijiao",}
基本数据类型和数字都是值类型,切片和map也是引用类型
map数据的排序:
根据key升序输出map的key=>value
var keySlice []int
for key,_ := range map1{
keySlice = append(keySlice,key)
}
sort.Ints(keySlice)
for _,v := range keySlice{
fmt.printf(mapl[v])}
Golang的函数
用于指定任务的代码块
函数的定义: func 函数名(){}
func sunFn(x int, y int) int{
sun := x+y
return sum
}
func main(){
sun1 := sunFn(12,3)
}
函数参数的简写
func subFn1(x,y int) int{// 函数参数的简写,只能简写后面
sub := x-y
return sub
}
函数的可变参数:…
func sumFn1(x,…int) int{}
sumFn1(12,34,45,46)//[12,34,45,46]
可变参数是切片
func sumFn2(x int,y …int)int{//固定参数和可变参数可以写在一起,可变参数要写固定参数后面
}
return 关键词一次可以返回多个值
func calc(x,y int) (int ,int){
sum := x+y
sub := x-y
return sum,sub
}
sum, sub := calc(10,2)//接收2个返回值
返回值命名:函数定义时可以给返回值命名,并在函数提中直接使用这些变量,最后通过return返回
func calc1(x,y int)(sum int,sub int){
sum =x+y
sub =x-y
return
}
sum, sub := calc(11,2)
func calc1(x,y int)(sum,sub int){
sum =x+y
sub =x-y
return
}
sum, sub := calc(11,2)
a, _ := calc(11,2)
函数的基本使用 func 函数名(参数类型)(返回类型)
func test(){}//无参数无返回值