golang基本

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(){}//无参数无返回值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值