Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具备垃圾回收功能的编程语言。java
我学习主要参考七米老师的博客李文周的博客以及他在B站的视频,在此也感谢一下大佬无私分享。golang
package main //一个Go项目必须有一个main包 import "fmt" func main() { //万物起源Hello World fmt.Println("Hello World!") }
const ( a1 = iota //a = iota == 0 b1 //b = iota == 1 c1 //c = iota == 2 )
//保留分行 s3 := ` Hello World` fmt.Println(s3) /* Hello World */
//初始化按下标定义 str := [...]string{1:"java",3:"go",7:"c"} fmt.Println(str) //[java go c]
哦差点忘了,数组不可变!编程
解决数组不可变
slice是引用数组的某一部分,改变slice会改变对应数组数组
s3 := make([]int,5,10) fmt.Printf("%v,len:%v,cap:%v",s3,len(s3),cap(s3)) //slice能跟nil(空)比较,但不能跟其余slice比较 if s == nil {//suggest len(s) == 0 fmt.Println("s is nil") } //! not nil after init,although it is empty var s4 = []int{} //or s4 := make([]int,0) the same if s4 == nil { fmt.Println("s4 is nil") //you won't see it }
for i:=0; i<10; i++ { s = append(s, i) //向s末尾添加值i的元素,容量不足会自动扩大 fmt.Printf("%v,len:%v,cap:%v,ptr:%p\n",s,len(s),cap(s),s) } //append s1(另外一个切片) s = append(s,s1...) fmt.Println(s)
//delete index: append(s[0:index],s[index+1:]...) s8 := append(s[0:2],s[3:]...) //delete s[2] fmt.Println(s8)
//sort array var b = [...]int{8,23,12,4,5} sort.Ints(b[:]) fmt.Println(b)
go 没有while,或者说,for expr {}就是while并发
//if if i:=0; i>1 { //选择性定义 fmt.Println(i) } else if i>2 { fmt.Println(i) } else { fmt.Println(i) }
//switch switch str:="hello";str { //不只支持整形 case "he"+"llo": //case能够使用表达式 fmt.Println("true") fallthrough //go每一个case自动break,使用fallthrough执行下一case default: fmt.Println("false") }
//for //1. for i:=0; i<10; i++ { fmt.Println(i) } //2.while i := 10 for i>0 { fmt.Println(i) i-- } //for range var name = []int {1, 2, 3, 4, 5} for j,k := range name { fmt.Println(j,k) }
学过C的同窗可能看到指针就会有点头皮发麻吗哈哈,go的指针很简便了app
a := 10 pa := &a fmt.Printf("pa:%v,addr:%p,type:%T\n",*pa,pa,pa)
就这么简单的用法,*和&,没有偏移编程语言
//还有感受不太会用到的new b := new(int) //*b = 0 fmt.Println(*b)
Go仍是挺有趣的,语法中充满了一些对语法老前辈的不满哈哈。
那么今天就学到这了,人生苦短,Let's GO!学习