henryspace

记录精彩的程序人生 开始使用

Go 0 篇文章

Part 15 - Go 语言学习 - 接口的定义

接口的定义 1,使用者---> 实现者,ducktyping 只关注外部功能,而不关注内部实现接口由使用者定义 packagemainimport("fmt""ging/retriever/real")//使用者定义接口 typeRetrieverinterface{Get(urlstring)string}funcdownload(rRetriever)string{returnr.Get("https:/

Part 14 - Go 语言学习 - 接口的应用

接口的应用代码讲解首先定义一个包,Get 方法实现一个相当于 curl 的功能 packageinfraimport("io/ioutil""net/http")typeRetrieverstruct{}func(Retriever)Get(urlstring)string{resp,err:=http.Get(url)iferr!=nil{panic(err)}deferresp.Body.Close()

Part 12 - Go 语言学习 - 包和封装

包和封装名字一般使用驼峰法首字母大写:public 首字母小写:private 包的定义每个目录一个包 main 包包含可执行入口为结构定义的方法必须放在一个包内可以是不同的文件 5.示例代码 packagetreeimport("fmt")//定义结构体 typeNodestruct{ValueintLeft,Right*Node}//打印值 func(tree*Node)Print(){fmt.Println(

Part 11 - Go 语言学习 - 面向对象

面向对象 go 语言仅支持封装,不支持继承和多态 go 语言没有 class,只有 struct 值接收者和指针接收者要改变内容,必须使用指针接收者结构过大也考虑使用指针接收者 packagemainimport("fmt")//定义结构体 typetreeNodestruct{ValueintLeft,Right*treeNode}//打印值 func(tree*treeNode)print(){fmt.Printl

Part 10 - Go 语言学习 - 字符和字符串处理

字符和字符串处理字符串循环 a:="abcdef"s:="see,今天天气真好"//循环,byte 相当于 int8,,一个字符占 1 个字节,拿到字符串中的字符,字符串的底层就是切片 for_,v:=range[]byte(a){fmt.Printf("%c\n",v)}//utf8 的循环,rune 相当于 int32,一个字符占 4 个字节,能够满足 utf8 三个字节的需求 fori,v:=range[]rune(s)

Part 8 - Go 语言学习 - 指针

指针指针不能运算 varaint=2varpa*int=&a*pa=3fmt.Println(a)参数传递,go 语言是值传递通过指针传递来实现一种引用传递的效果定义 a,b 为指针类型,调用时参数取地址,或者不用指针用 return 出去交换也可以示例 1:funcswap(a,b*int){*b,*a=*a,*b}a:=3b:=4swap(&a,&b)fmt.Println(a,b)示例 2:funcswap(

Part 7 - Go 语言学习 - 函数

函数函数由 func 关键字定义 funceval(a,bint,opstring)int{switchop{case"+":result=a+bcase"-":result=a-bcase"*":result=a*bcase"/":result=a/bdefault:panic("unsurported")}returnresult}函数可以返回多个值函数作为参数,函数式编程,函数是一等公民 funcap

Part 6 - Go 语言学习 - 循环控制语句

循环控制语句 forfor 的条件里不需要括号 for 的条件里可以省略初始条件,结束条件,递增表达式 sum:=0fori:=1;i<=100;i++{sum+=i}省略初始条件 funcconvertToBin(nint)string{result:=""for;n>0;n/=2{lsb:=n%2result=strconv.Itos(lsb)+result}}省略递增条件 funcprintFile(fil