go 语言中奇怪的语法

1. 断言 r.(x)

r.(map[string]interface{}) r.(x)
断言,然后可以用一元或二元值接收。一个参数接受的话,出错会panic。两个参数接受的话,第二个是bool,断言不成功会赋值为false。常用type switch判断interface的实体类型

2.map的 声明与遍历

var m1 map[string]string

m1 = make(map[string]string) //使用make函数创建一个非nil的map,nil map不能赋值
也可以选择是否在创建时指定该map的初始存储能力,下面的例子创建了一个初始存储能力为100的map:
myMap = make(map[string] PersonInfo, 100)
// 最后给已声明的map赋值
m1["a"] = "aa"
m1["b"] = "bb"使用make函数创建一个非nil的map,nil map不能赋值
也可以选择是否在创建时指定该map的初始存储能力,下面的例子创建了一个初始存储能力为100的map:
myMap = make(map[string] PersonInfo, 100)
// 最后给已声明的map赋值
m1["a"] = "aa"
m1["b"] = "bb"
m := make(map[string]string)
// 初始化 + 赋值一体化
m3 := map[string]string{
	"a": "aa",
	"b": "bb",
}

// 遍历map
for k, v := range m1 {
	fmt.Println(k, v)
}// 从这个map查找键为"1234"的信息
person, ok := personDB["1234"]


io.WriteString()func WriteString(w Writer, s string) (n int, err error) // 将字符串s的内容写入w中

3.数组和切片

1、初始化:数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变 

var v3 [10]int // 数组

var v4 []int // 数组切片

 

2、函数传递:数组需要明确指定大小,切片不需要。数组是值传递,切片是地址传递

var a [10]int

a := [3]int{1,2,3}

结构体数组

 
type  a1 =struct {
         key1 string
        key2 string 
        key3 string
}
testData :=[]a1{
         a1{"1","2","3"},
         a1{"4","5","6"},
}

切片拥有长度和容量。长度为包含元素的个数,容量是指第一个元素开始到底层数组末尾的个数用len(s)和cap(s)获取。

make 可以创建切片
 

a := make([]int ,5)//创建长度和容量为5的切片。

b:=make([]int,0,5 ) 创建长度为0容量为5的切片

切片的切片c:=b[: 2]     d :=d[2;5]

可以用append()向切片中追加元素

	s = append(s, 6, 7, 8)
可以像遍历map一样遍历切片中的数

for i,v:=range s{

   fmt.Println(i,v)

}

for _,v :=range s{fmt.Println(v)}//这里用到了匿名变量_

 

3.itoa

iota比较特殊,可以被认为是一个可被编译器修改的常量,在每一个const关键字出现时被
重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增1。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值