golang
发布时间:2020-12-16 19:13:46 所属栏目:大数据 来源:网络整理
导读:来源:http://golang-book.com/ golang 语法 //变量var x string = "Hello World"var x string//golang 字符串默认初始化是 “”,不会有nil出现x = "Hello World"var x = "Hello World"//多行字符串x := `abc`//非string 转string方法#string到int int,err:=
来源:http://golang-book.com/ golang 语法//变量 var x string = "Hello World" var x string //golang 字符串默认初始化是 “”,不会有nil出现 x = "Hello World" var x = "Hello World" //多行字符串 x := ` a b c ` //非string 转string方法 #string到int int,err:=strconv.Atoi(string) #string到int64 int64,err := strconv.ParseInt(string,10,64) #int到string string:=strconv.Itoa(int) #int64到string string:=strconv.FormatInt(int64,10) x := 5 str1 := strconv.Itoa(x) //常量 const x string = "Hello World" //多个变量定义 var ( a = 5 b = 10 c = 15 ) const( a = iota b c ) //循环 i := 1 for i <= 10 { fmt.Println(i) i = i + 1 } for i,value := range x { total += value } for i := 1; i <= 10; i++ { fmt.Println(i) } //条件 if i % 2 == 0 { // even } else { // odd } //golang 没有3目运算符 //switch 默认不会运行到下一个case (多条件使用,<case 1,2,3,4:>)。需要的话使用 fallthrough t := time.Now() switch { case t.Hour() < 12: fmt.Println("It's before noon") default: fmt.Println("It's after noon") } switch t := i.(type) { case bool: fmt.Println("I'm a bool") case int: fmt.Println("I'm an int") default: fmt.Printf("Don't know type %Tn",t) } //数组 var x [5]int len(x) x := [5]float64{ 98,93,77,82,83 } x := make([]float64,5) arr := [5]float64{1,4,5} x := arr[0:5] arr[0:] == arr[0:len(arr)] arr[:5] == arr[0:5] arr[:] == arr[0:len(arr)] //数组操作 slice1 := []int{1,3} slice2 := append(slice1,5) //添加4和5 slice1 := []int{1,3} slice2 := make([]int,2) copy(slice2,slice1)//复制 //map x := make(map[string]int) x["key"] = 10 elements := map[string]string{ "H": "Hydrogen","He": "Helium","Li": "Lithium","Be": "Beryllium","B": "Boron","C": "Carbon","N": "Nitrogen","O": "Oxygen","F": "Fluorine","Ne": "Neon",} //删除key delete(x,1) //ok是个bool值,map值存在是true if name,ok := m["b"]; ok { fmt.Println(name,ok) } //function 注意函数首字母大写为Public 小写为private func f2() (r int) { r = 1 return } func f() (int,int) { return 5,6 } func add(args ...int) int { total := 0 for _,v := range args { total += v } return total } func main() { xs := []int{1,3} fmt.Println(add(xs...)) } //内建函数,其实就是看成类 func makeEvenGenerator() func() uint { i := uint(0) return func() (ret uint) { ret = i i += 2 return } } func main() { nextEven := makeEvenGenerator() fmt.Println(nextEven()) // 0 fmt.Println(nextEven()) // 2 fmt.Println(nextEven()) // 4 } //defer 会在函数return 前执行 f,_ := os.Open(filename) defer f.Close() //* 与 & 用法。类似于指针 func zero(xPtr *int) { *xPtr = 0 } func main() { x := 5 zero(&x) fmt.Println(x) // x is 0 } //sturct 与interface type Rectangle struct { x1,y1,x2,y2 float64 } func (r *Rectangle) area() float64 { l := distance(r.x1,r.y1,r.x1,r.y2) w := distance(r.x1,r.x2,r.y1) return l * w } //go 没有构造函数,一般是使用全局函数NewXXX func NewRectangle () *Rectangle{ r := new(Rectangle) return r } r := Rectangle{0,10} fmt.Println(r.area()) type Shape interface { area() float64 } var f *os.File if f,err = os.Open(url); err != nil{ return } defer f.Close() //readAt 等于seekAt and read. f.ReadAt() //interface 类型转换 value,ok := element.(Person); ok //golang 的继承不能叫继承,叫嵌套 //类似于在B中嵌套A的方法 struct A{ name string } struct B{ A } //在B中获取A对象 var b = new(B) var a = b.A //golang init 函数 //包导入后会优先运行init函数 func init(){ } //xml 使用namespace 并匹配任意节点 type Node struct { XMLName xml.Name Id string `xml:"http://schemas.android.com/apk/res/android id,attr"` Nodes []Node `xml:",any"` } 常用命令//运行 go run main.go //包安装 go install //测试 go test //环境变量 go env //包下载 go get golang.org/x/mobile //版本 go version 项目搜索 https://github.com/golang/go/wiki/Projects (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |