0
点赞
收藏
分享

微信扫一扫

Go语言学习Day06

dsysama 2022-12-29 阅读 116


今天学习了接口等东西。

package main

import (
"fmt"
"math"
)

type I interface {
M()
}

type T struct {
S string
}

func (t *T)M(){
fmt.Println(t.S)
}

type F float64

func (t F)M(){
fmt.Println(t)
}

func describe(i I){
fmt.Printf("(%v,%T)\n",i,i)
}

func main(){
var i I

i = &T{"Hello"}
describe(i)
i.M()

i = F(math.Pi)
describe(i)
i.M()
}

接下来是今天的学习代码:

package main

import (
"fmt"
)

type I interface {
M()
}

type T struct {
S string
}

func (t *T)M(){
if t==nil{
fmt.Println("<nil>")
return
}
fmt.Println(t.S)
}

func main(){
var i I
var t *T
i = t
describe(i)
i.M()

i = &T{"hello"}
describe(i)
i.M()

}

func describe(i I) {
fmt.Printf("(%v,%T)\n",i,i)
}

package main

import "fmt"

type I interface {
M()
}

func main(){
var i I
describe(i)
i.M() //当未具体实现接口的方法时候,会自动报错

}

func describe(i I) {
fmt.Printf("(%v,%T)\n",i,i)
}

package main
import (
"fmt"
"io"
"strings"
)

func main() {
r := strings.NewReader("Hello, Reader!")

b := make([]byte, 8)
for {
n, err := r.Read(b)
fmt.Printf("n = %v err = %v b = %v\n", n, err, b)
fmt.Printf("b[:n] = %q\n", b[:n])
if err == io.EOF {
break
}
}
}

//接口断言
//即判断数据类型
package main

import (
"fmt"
)

func main(){
var i interface{} = "hello"
s:=i.(string)
fmt.Println(s)

s,ok :=i.(string)
fmt.Println(s,ok)
f,ok := i.(float64)
fmt.Println(f,ok)
}

package main

import "fmt"

func do(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("Twice %v is %v\n", v, v*2)
case string:
fmt.Printf("%q is %v bytes long\n", v, len(v))
default:
fmt.Printf("I don't know about type %T!\n", v)
}
}

func main() {
do(21)
do("hello")
do(true)
}

package main

import "fmt"

//声明接口
type I interface {
M()
}

//声明结构体
type T struct {
S string
}

//类型T实现了M方法,但无需显示调用
func (t T)M(){
fmt.Println(t.S)
}

func main() {
var i I = T{"hello"}
i.M()
}

就是现在基础教程还剩最后一个并发还没学,在我看来,这可能是Go语言的灵魂了,等有时间再好好总结一下Go关于接口的一些重要知识点!接下来要取准备搞Python的项目了,希望今天能把这一块拿下来,加油加油加油!!!

举报

相关推荐

学习Day06

Java学习day06

C语言笔记-day06

Day06

java学习笔记day06

Go语言学习Day3

Day06 方法

day06 笔记

Day06作业

0 条评论