zoukankan      html  css  js  c++  java
  • GO-Channel篇

    1.⻓度为0的数组在内存中并不占⽤空间。空数组虽然很少直接使⽤,但是可以⽤于强调某种特有类型的

    操作时避免分配额外的内存空间,⽐如⽤于管道的同步操作:
    c1 := make(chan [0]int)
    go func() {
    fmt.Println("c1")
    c1 <- [0]int{}
    }()
    <-c1

    在这⾥,我们并不关⼼管道中传输数据的真实类型,其中管道接收和发送操作只是⽤于消息的同步。
    对于这种场景,我们⽤空数组来作为管道类型可以减少管道元素赋值时的开销。当然⼀般更倾向于⽤
    ⽆类型的匿名结构体代替:
    c2 := make(chan struct{})
    go func() {
    fmt.Println("c2")
    c2 <- struct{}{} // struct{}部分是类型, {}表示对应的结构体值
    }()
    <-c2

    2.字符

    字符串的元素不可修改,是⼀个只读的字节数组,

    example:

    func main() {
    //查询Unicode字符串长度用utf8.RuneCountInString()函数,ASCII字符用len()
    str1:="君のことが大好きです、"
    str2:="这是中文"
    n1:=utf8.RuneCountInString(str1)
    n2:=utf8.RuneCountInString(str2)
    fmt.Println(n1,n2)
    //bianli_ASCII()//乱码了,
    bianli_Unicode()
      
      
      for i, c := range []byte("世界abc") {
       fmt.Println(i, c)//仅能成功遍历ascii码
      }
    }
    func bianli_ASCII(){
    theme:="狙击 start"
    for i:=0;i<len(theme);i++{
    fmt.Printf("ASCII: %c %d ",theme[i],theme[i])
    }
    }
    func bianli_Unicode(){
    theme:="狙击 start"
    for _,s:=range theme{
    fmt.Printf("Unicode: %c %d ",s,s)
    }
    }


  • 相关阅读:
    js Bom Dom
    2019西安多校联训 Day1
    数论——扩展欧几里德
    MySQL InnoDB引擎行格式、数据页简析
    centos7安装ansible并简单设置k8s集群节点hosts文件
    Redis缓存穿透和雪崩
    Redis主从复制——哨兵模式
    Redis主从复制——非哨兵模式
    Redis发布订阅
    Redis持久化——RDB与AOF
  • 原文地址:https://www.cnblogs.com/wddx5/p/12288527.html
Copyright © 2011-2022 走看看