接口 interface
package main
import "fmt"
//动物
type dongwu interface {
wangwang()
}
//狗
type dog struct {
name string
}
func (d dog) wangwang() {
fmt.Println(d.name,"会 汪汪汪")
}
//猴子
type monkey struct {
name string
}
func (d monkey) wangwang() {
fmt.Println(d.name,"会 爬树")
}
func da(d dongwu) {
d.wangwang()
}
func main() {
d := dog{name:"狼狗"}
da(d)
b := monkey{name:"大嘴猴"}
da(b)
}
package main
import "fmt"
//接口嵌套
type Monkey interface {
dongwu
lingzhang
}
//动物
type dongwu interface {
wangwang()
}
//灵长动物
type lingzhang interface {
sikao()
}
//狗
type dog struct {
name string
}
func (d dog) wangwang() {
fmt.Println(d.name,"会 汪汪汪")
}
func (d dog) sikao() {
fmt.Println(d.name,"会 思考")
}
//猴子
type monkey struct {
name string
}
func (d monkey) wangwang() {
fmt.Println(d.name,"会 爬树")
}
func (d monkey) sikao() {
fmt.Println(d.name,"会 思考")
}
func da(d Monkey) {
d.wangwang()
}
func sk(d Monkey) {
d.sikao()
}
func main() {
dd := dog{name:"狼狗"}
da(dd)
b := monkey{name: "大嘴猴"}
da(b)
sk(b)
}
func test1(a interface{}) {
fmt.Printf("%T %#v \n",a,a)
}
func main() {
//空接口
var m1 map[string]interface{}
m1 = make(map[string]interface{})
m1["name"] = "张三"
m1["age"] = 16
m1["money"] = 12.56
m1["is_boy"] = true
m1["生日"] = time.Now().Unix()
fmt.Printf("%T %#v \n",m1,m1)
//作为参数
test1(456.22)
}
//判断类型是啥
func istype1(t interface{}) {
fmt.Printf("%T \n",t)
switch t.(type) {
case int:
fmt.Println("int 类型")
case string:
fmt.Println("string 类型")
case byte:
fmt.Println("byte 类型")
case map[int]interface{}:
fmt.Println("map[int]interface{} 类型")
case bool:
fmt.Println("bool 类型")
case float64:
fmt.Println("float64 类型")
case int32:
fmt.Println("float64 类型")
}
}
func istype2(t interface{}) {
fmt.Printf("%T \n",t)
if str,ok:=t.(int);ok == false{
fmt.Println("非int类型")
}else{
fmt.Println("int类型;值为: ",str)
}
}
func main() {
istype1(123)
istype1('1')
istype1(false)
istype2(false)
istype2(456)
}
import (
"bufio"
"fmt"
"io"
"io/ioutil"
"os"
)
func du1() {
fileinfo,err := os.Open(`E:\Go\src\DarkHorse\studygo\day05\1.log`)
defer fileinfo.Close()
if err != nil{
fmt.Println("打开文件出错",err)
return
}
var info [10]byte
//infos := make([]byte,188)
for {
n,err:=fileinfo.Read(info[:])
if err != io.EOF{
fmt.Println("读完了",err)
return
}
if err != nil{
fmt.Println("读取文件出错",err)
return
}
fmt.Println(n)
fmt.Println(len(info))
fmt.Println(string(info[:n]))
if n < 10{
return
}
}
}
//利用 bufio
func du2() {
fileobj,err:=os.Open(`E:\Go\src\DarkHorse\studygo\day05\1.log`)
if err != nil{
fmt.Println("文件打开失败")
}
defer fileobj.Close()
reader := bufio.NewReader(fileobj)
for {
line,err := reader.ReadString('\n')
fmt.Println(line)
if err == io.EOF{
fmt.Println("读完了啊")
return
}
if err != nil{
fmt.Println("伙计报错了",err)
return
}
}
}
//读全部
func du3() {
ret,err := ioutil.ReadFile(`E:\Go\src\DarkHorse\studygo\day05\1.log`)
if err != nil{
fmt.Println("文件打开失败")
}
fmt.Print(string(ret))
}
func main() {
du3()
}
func xie1() {
fileinfo,err := os.OpenFile(`E:\Go\src\DarkHorse\studygo\day05\2.log`,os.O_WRONLY|os.O_CREATE,0664)
if err != nil{
fmt.Println("文件打开失败",err)
}
defer fileinfo.Close()
fileinfo.Write([]byte("今天天气很好啊 \n"))
fileinfo.WriteString("你说的对 ")
}
//缓存写
func xie2() {
fileinfo,err := os.OpenFile(`E:\Go\src\DarkHorse\studygo\day05\3.log`,os.O_WRONLY|os.O_CREATE,0664)
if err != nil{
fmt.Println("文件打开失败",err)
}
defer fileinfo.Close()
//整个缓存
wr := bufio.NewWriter(fileinfo)
wr.WriteString("12331231")
wr.Flush() //最后写入文件
}
//直接全部写
func xie3() {
str := "阿斯蒂芬的共和国肺结核挂科就好"
err := ioutil.WriteFile(`E:\Go\src\DarkHorse\studygo\day05\4.log`,[]byte(str),0666)
if err != nil{
fmt.Print("出错了")
return
}
}
func main() {
xie3()
}
程序员,产品
8.7
PHP Go 前端
JwCode
渐悟分享