Go 语言 在线

2612Win7 PowerShell升级

win7系统 windows update 总是更新失败

装ps5.1安装包 安装失败

右键桌面上 电脑 > 管理 > 计算机管理 > 服务和应用程序  >  服务

 > 找到Windows up date和Background Intelligent Transfer Service服务 右键停止;

删除路径C:\Windows\SoftwareDistribution\DataStore和C:\Windows\SoftwareDistribution\Download下的所有文件;

重新开启Windows up date和Background Intelligent Transfer Service服务;

再次进入设置—系统和安全—windows更新 尝试升级更新

问题解决

2549Go 语言数组

golang 把array/slice转成逗号分隔的字符串
strings.Replace(strings.Trim(fmt.Sprint(array_or_slice), "[]"), " ", ",", -1)

2463GO rune 数据类型

Go rune []byte string 转换

func main(){

    str := "名称Tom"

    fmt.Println(len(str)) //9

    fmt.Println(len([]byte(str))) //9

}

字符串的长度和[]byte一样长

func main(){

    str := "名称Tom"

    fmt.Println(len(str))  //9 存储长度

    fmt.Println(len([]rune(str))) //5 个数

}

转换本质是一致的 所以转换的方式也简单

str := "I am lilei"

//string 转[]byte

b := []byte(str)

//[]byte转string

str = string(b)

2279Go 语言 Unicode码点

码点(code point) 和 代码单元(code unit) 以及String对象中操作码点和代码单元

一个码点是信息原子的单元 文本是一连串的码点 每一个码点是一个由标准的Unicode编码规定的数字

一个代码单元是一个用来存储编码码点的一部分的单元 在UTF-8中 一个代码单元是8字节 在UTF-16中 一个代码单元是16字节

单独的一个代码单元可能代表一个完整的码点 也可能是一个码点的一部分

2228Go 语言函数闭包

Golang 匿名函数和闭包

Go语言支持匿名函数 即函数可以像普通变量一样 使用

 

#main.go

package main

import (

    "fmt"

)

func main() {

   //两种写法

    var v func(a int) int

    v = func(a int) int {

        return a * a

    }

    fmt.Println(v(6)) //36    

    

    v1 := func(i int) int {

        return i * i

    }

    fmt.Println(v1(7))//49

}

GO语言 匿名函数就是闭包 《GO语言编程》 对闭包的解释

基本概念

闭包是可以包含自由(未绑定到特定对象)变量的代码块 这些变量不在这个代码块内 或者 任何全局上下文中定义 而是在定义代码块的环境中定义 要执行的代码块(由于自由变量包含

在代码块中 所以这些自由变量以及它们引用的对象没有被释放)为自由变量提供绑定的计算环境(作用域)

闭包的价值

在于可以作为函数对象 或 匿名函数 对于类型系统而言 这意味着不仅要表示 数据还要表示代码 支持闭包的多数语言都将函数作为第一级对象 就是说这些函数可以存储到

变量中作为参数传递给其他函数 能够被函数动态创建和返回

一个函数和与其相关的引用环境 组合而成的实体

package main

import "fmt"

func main() {

    var f = Adder()

    fmt.Println(f(1), "-")//1 -

    fmt.Println(f(20), "-")//21 -

    fmt.Println(f(300), "-")//321 -

}

 

func Adder() func(int) int {

    var x int

    return func(delta int) int {

        x += delta

        return x

    }

}

测试文件后缀的闭包  

package main

import (

    "fmt"

    "strings"

)

func makeSuffix(suffix string) func(string) string {

    return func(name string) string {

        if strings.HasSuffix(name, suffix) == false {

            return name + suffix

        }

        return name

    }

}

func main() { //判断字符串 以bmp结尾

    f1 := makeSuffix(".bmp")

    fmt.Println(f1("test"))

    fmt.Println(f1("pic"))

    f2 := makeSuffix(".jpg")

    fmt.Println(f2("test"))

    fmt.Println(f2("pic"))

}